Nginx服务部署及基础配置
一、nginx
1、Nginx 功能介绍
-
-
http/https协议的反向代理 7层
-
结合FastCGI/uWSGI/SCGI等协议反向代理动态资源请求
-
tcp/udp协议的请求转发(反向代理) 4层
2、基础特性
-
模块化设计,较好的扩展性
-
高可靠性
-
支持热部署:不停机更新配置文件,升级版本,更换日志文件
-
低内存消耗:10000个keep-alive连接模式下的非活动连接,仅需2.5M内存
3、I/O模型相关概念
①Nginx服务使用异步非阻塞模式:请求不需要排队,会反馈任务的完成结果。
②Apache服务使用同步阻塞模式:请求需要排队,且不会主动返回结果。
③同步/异步:关注的是消息通信机制,即调用者在等待一件事情的处理结果时。被调用者是否提供完成。
④同步:调用者需要主动询问结果。
⑤异步:调用者不需要主动询问结果,被调用者会主动返回结果。
⑥阻塞:系统同时只能处理1个请求,另外的请求需要排队。
⑦非阻塞:系统同时处理多个请求。
二、部署Nginx
1、yum部署Nginx
①使用yum部署Nginx需要先安装epel-release扩展包,官方源默认没有Nginx的yum源。
yum install epel-release -y
#安装epel-release扩展源
yum install nginx -y
#安装nginx服务
yum -y install gcc pcre-devel openssl-devel zlib-devel
#安装编译安装需要的依赖包和工具
cd /opt
#进入指定安装包下载的目录 /opt下
tar xf nginx-1.18.0.tar.gz
#将nginx包解压到当前文件夹
cd nginx-1.18.0
#进入解压后nginx包中
./configure
#执行当前目录下的configure脚本检测编译安装环境和工具
--prefix=/apps/nginx \
#执行脚本时指定路径为 /apps/nginx文件夹中,若没有此文件夹需要先创建再进行编译指定
--user=nginx \
#指定用户为nginx用户
--group=nginx \
#指定组为nginx组
--with-http_ssl_module \
#以下是编译时安装的指定模块
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
make
#执行完成检测编译安装环境和工具后将nginx安装包翻译为二进制
make install
#翻译完成后将包写入磁盘中
③写进磁盘完成后进入部署的文件夹使用绝对路径启动nginx服务,然后查看是否有nginx进程。
/apps/nginx/sbin/nginx
#使用绝对路径启动nginx
ps aux |grep nginx
#查看是否有nginx进程
三、Nginx使用
注意:以下命令若非yum安装使用时要使用绝对路径调用nginx命令,或将编译安装路径中的sbin文件夹中的nginx程序拷贝到/usr/sbin路径下。
1、基础使用
①nginx -V 查看安装了那些模块
②nginx -v 查看版本号
③nginx -s 发送信号 后面可以跟stop、reload、quit、reopen
④nginx -t 检查著配置文件语法
nginx -g 修改执行用户ps aux |grep nginx中查看。需要注销配置文件中的user nginx中。nginx -g "daemon off"前台运行,默认后台运行容器中需要使用。
⑥nginx -c 指定配置文件,一般用于.service文件中
2、nginx信号
①quit信号 -----SIGTERM,直接停止,不等服务执行完,nginx -s quit或kill -TERM执行。
②stop信号-----SIGQUIT,优雅的退出,等所有服务执行完再退出,nginx -s stop 或kill -QUIT执行。
③reopen信号---SIGUSER1 分隔日志。
创建新的nginx日志时需要发送USER1信号给nginx主进程才可以生效。kill -USER1 nginx主进程pid号。
④SIGUSER2信号,优雅的升级,不影响正在使用的用户,kill -USER2执行。
⑤reload信号----SIGHUP 重新加载配置文件,nginx -s reload或kill -HUP执行。
四、web服务选择及优化
1、Nginx与Apache对比
①Nginx使用异步非阻塞工作模式,Apache使用同步阻塞模式。
②Nginx处理静态资源更好,Apache处理动态资源更好。
③Nginx是轻量级web服务器,耗费资源比Apache少。
④Nginx抗并发性更好,Apache更稳定。
⑤Apache对接PHP简单,Nginx对接需要借助其他后端工具。
2、Nginx服务调优
①根据cpu数量配置master有多少个worker子进程。
配置文件全局中修改:work_processes auto(表示根据cpu数量决定个数)。
②设置长链接超时时间。
keepalive_timeout 50。
③调整nginx进程优先级。
worker_priority -20 (范围-20到19,越小优先级越高)
④调整nginx可打开文件数量。
worker_rlimit_nofile 65536;
需要配合修改内核参数vim /sercurity/limits.conf文件中加入下面参数重启机器即可。
*soft nofile 数量
*hard nofile 数量
⑥调整每个worker进程可打开文件数量,注意需要配合nginx总共可以打开文件数量限制。
worker_connections 数量;
⑦隐藏nginx版本号在http模块中添加以下参数。
server_tockens off