nginx
2021/5/25 7:24:50
本文主要是介绍nginx,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
简介
nginx是一款轻量级的web服务器/反向代理服务器/电子邮件(IMAP,POP3)代理服务器,并在一个BSD-like协议下发行。
nginx的特点是内存占用少,并发能力强。,在同类网页服务器中表现比较好。
特性与优点
特性
- 能支持最高50000个并发连接数的响应
- nginx作为负载均衡服务器,既可以作为http服务器对外服务,也可内部直接支持php程序对外服务(反向代理)
- nginx采用c编写,系统资源开销或cpu使用效率都高于perlbal( Perl 编写的单线程的事件驱动服务器,可充当 Web 服务器 和 HTTP 负载均衡)
优点
- 高并发连接,最多支持5万并发,生产环境能到2~3万并发连接数
- 内存消耗少,3万并发连接下,10个nginx进程占用150M内存
- 配置文件通俗易懂(相对)
- 成本低廉(开源软件)
- 支持rewrite重写规则,根据域名,统一资源定位器URL,将http请求分发到不同后端服务器群组。
- 内置健康检测,不会因为单个web服务器宕机影响前端访问
- 节省带宽,可以添加浏览器本地缓存
- 模块化设计,支持动态编译。
- 外围支持好:模块和二次开发多
- 支持热部署: 不停机重载配置文件
- 支持事件驱动,AIO(AsyncIO,异步IO)、mmap(Memory Map,内存映射)等性能优化
nginx功能
基本功能
-
静态资源的web服务器
-
http,smtp,pop3协议的反向代理服务器
-
缓存加速,负载均衡(负载均衡离不开反向代理,二者相互依存)
-
支持FastCGI(fpm,LNMP),uWSGI(python)等
-
模块化
-
支持SSL(证书https等)
扩展功能
-
基于名称和IP的虚拟主机
-
支持keepalive(长连接,不是高可用!)
-
支持平滑升级
-
定制访问日志、支持使用日志缓冲区提高日志存储性能
-
支持URL重写
-
支持路径别名
-
支持基于IP及用户的访问控制
-
支持速率限制,支持并发数限制
应用类别
-
使用nginx结合FastCGI运行PHP、JSP、Perl等程序
-
使用nginx作反向代理、负载均衡、规则过滤
-
使用nginx运行静态HTML网页、图片
-
nginx与其他新技术的结合应用
nginx模块与工作原理
nginx
由内核和模块组成。其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
模块分类
nginx的模块从结构上分为:
核心模块
- HTTP模块
- EVENT模块
- MAIL模块
基础模块
- HTTP Access模块
- HTTP FastCGI模块
- HTTP Proxy模块
- HTTP Rewrite模块
第三方模块
- HTTP Upstream模块
- Request Hash模块
- Notice模块
- HTTP Access Key模块
nginx模块从功能上分类,分为三类:
- Handlers(处理器模块)。此类模块直接处理请求,并进行输出内容和修改headers信息等操作。handlers处理器模块一般只能有一个
- Filters(过滤器模块)。此类模块主要对其他处理器模块输出的内容进行修改操作,最后由nginx输出
- Proxies(代理器模块)。就是nginx的HTTP Upstream之类的模块,这些模块主要与后端一些服务比如fastcgi等操作交互,实现服务代理和负载均衡等功能
nginx模块分为:核心模块、事件模块、标准Http模块、可选Http模块、邮件模块、第三方模块和补丁等
- nginx基本模块:所谓基本模块,指的是nginx默认的功能模块,它们提供的指令,允许你使用定义nginx基本功能的变量,在编译时不能被禁用,包括:
- 核心模块:基本功能和指令,如进程管理和安全。常见的核心模块指令,大部分是放置在配置文件的顶部(配置文件行的最左)
- 事件模块:在Nginx内配置网络使用的能力。常见的events(事件)模块指令,大部分是放置在配置文件的顶部
- 配置模块:提供包含机制(include)
工作原理
nginx模块被直接编译进nginx,属于静态编译方式。
启动时将模块编译为一个so文件,然后在配置文件中决定是否加载模块。
nginx启动,产生一个master进程,该进程不处理任何客户端请求,而是用来产生worker线程。worker线程用来处理多个request(请求)
基本的WEB服务请求步骤:
nginx安装与配置
安装(源码)
//防火墙selinux关闭 systemctl stop firewalld.service setenforce 0 //创建nginx用户 [root@node1 ~]# useradd -r -M -s /sbin/nologin nginx //安装开发工具组和依赖包 [root@node1 ~]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make [root@node1 ~]# yum -y groups mark install 'development tools'
//创建日志存放目录 [root@node1 ~]# mkdir -p /var/log/nginx [root@node1 ~]# chown -R nginx.nginx /var/log/nginx //下载源码包 [root@node1 ~]# cd /usr/src/ [root@node1 src]# wget http://nginx.org/download/nginx-1.20.0.tar.gz [root@node1 src]# ll ... -rw-r--r--. 1 root root 1061070 Apr 20 22:46 nginx-1.20.0.tar.gz //解压 [root@node1 src]# tar xf nginx-1.20.0.tar.gz [root@node1 src]# cd nginx-1.20.0/ //编译安装 [root@node1 nginx-1.20.0]# ./configure \ > --prefix=/usr/local/nginx \ #指定路径 > --user=nginx \ #指定用户 > --group=nginx \ #指定组 > --with-debug \ #启用debug测试 > --with-http_ssl_module \ #启用ssl证书模块 > --with-http_realip_module \ #启用http真实ip模块 > --with-http_image_filter_module \ #启用http图像过滤器模块 > --with-http_gunzip_module \ #启用http压缩模块 > --with-http_gzip_static_module \ #启用静态压缩 > --with-http_stub_status_module \ #启用状态页面 > --http-log-path=/var/log/nginx/access.log \ #指定日http访问日志路径 > --error-log-path=/var/log/nginx/error.log #指定报错日志路径 //启用多核心加速安装 [root@node1 nginx-1.20.0]# make -j $(grep 'processor' /proc/cpuinfo | wc -l) && make install
配置
配置文件详解
默认是“nginx安装路径/conf/nginx.conf'
配置文件 | 作用 |
---|---|
nginx.conf | nginx的基本配置文件 |
mime.types | MIME类型关联的扩展文件 |
fastcgi.conf | 与fastcgi相关的配置 |
proxy.conf | 与proxy相关的配置 |
sites.conf | 配置nginx提供的网站,包括虚拟主机 |
//添加环境变量 [root@node1 nginx-1.20.0]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh [root@node1 nginx-1.20.0]# source /etc/profile.d/nginx.sh [root@node1 nginx-1.20.0]# which nginx /usr/local/nginx/sbin/nginx //语法 [root@node1 nginx-1.20.0]# nginx -help nginx version: nginx/1.20.0 Usage: nginx [-?hvVtTq] [-s signal] [-p prefix] [-e filename] [-c filename] [-g directives] Options: -?,-h : this help #帮助信息 -v : show version and exit #显示版本 -V : show version and configure options then exit #显示版本和配置选项 -t : test configuration and exit #测试配置并退出 -T : test configuration, dump it and exit #测试配置 -q : suppress non-error messages during configuration testing #配置测试期间只输出错误信息 -s signal : send signal to a master process: stop, quit, reopen, reload #传递控制信号给主进程 -p prefix : set prefix path (default: /usr/local/nginx/) #设置路径 -e filename : set error log file (default: /var/log/nginx/error.log) #设置错误日志路径 -c filename : set configuration file (default: conf/nginx.conf) #设置配置文件路径 -g directives : set global directives out of configuration file #从配置文件中设置全局指令
//启动测试 [root@node1 nginx-1.20.0]# nginx [root@node1 nginx-1.20.0]# ss -antl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:80 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 128 [::]:22 [::]:*
这篇关于nginx的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享
- 2024-08-14nginx 让访问带有/relid的地址返回404 ,例子 /relid-x-0.36-y-131.html-icode9专业技术文章分享
- 2024-08-14nginx 判断地址有/statics/的路径,指向到/home/html/statics/目录-icode9专业技术文章分享