设为首页 加入收藏

TOP

NGINX的配置和基本使用(一)
2023-07-23 13:42:17 】 浏览:127
Tags:NGINX

Linux NGINX

NGINX:engine X ,2002年开发,分为社区版和商业版(nginx plus )
社区版:分为主线版(开发版,奇数),稳定版(偶数)
	
Nginx官网:http://nginx.org
NGINX的两大功能:web服务器、反向代理服务器

NGINX和APACHE一样,也是基于模块设计的,使用不同的模块可以实现不同的功能。模块只能静态编译、不能动态加载。

NGINX的架构:一个主进程,若干个子进程。
主进程:接收用户的请求,转发用户请求、监控子进程
	
子进程:为用户提供服务(真正工作的进程),子进程数量一般设置为cpu的核心数
NGINX的安装:

编译安装:下载源码包进行编译安装

源码包地址:http://nginx.org/en/download.html

案例地址:https://www.cnblogs.com/heyongshen/p/16854271.html

源安装:centos 8和ubuntu 1804仓库中默认带的nginx版本是1.14版本

源下载地址:http://nginx.org/en/linux_packages.html

NGINX的相关参数:

-v 查看版本信息  -V 显示更详细的信息,包括编译参数
-t nginx配置文件语法检查
-c 找到nginx的配置文件
-e 指定错误日志
-g 指定指令,使用自己指定的指令来替代配置文件的指令
	例如:nginx配置文件里面的 user nginx; 可以不写在配置文件里面,而是通过nginx -g "user nginx" 来指定。
-s 发送信号,stop、reload等信号

启动NGINX:

可以通过编写systemd的unit文件来交给systemd托管,使用systemctl命令启动

通过NGINX自身的命令来启动:

# 启动nginx  nginx 默认就是后台执行
# nginx

说明:如果使用unit文件的方式来托管NGINX,那么不可以在使用nginx自身的命令来启动,会冲突。

NGINX的信号管理:

可以通过ngins -s 给nginx发送指令,从而管理nginx。

kill命令的使用参考:https://www.cnblogs.com/heyongshen/p/16854476.html

#nginx信号控制使用的几个选项
	
stop       立刻停止服务,相当于信号SIGTERM,SIGINT
	
quit       优雅的停止服务,相当于信号SIGQUIT
	
reload     重新加载配置文件,重新生成worker进程,master进程不变,相当于信号SIGHUP
	
reopen     重新开始记录日志文件,在切割日志时用途较大。相当于信号SIGUSR1
	
SIGUSR2    平滑升级可执行程序
	
SIGWINCH   优雅的停止工作进程

说明:

USER1 USER2,作为用户自定义信号,程序可以自定义这2个信号的含义,在收到这2个信号的时候,可以自定义代码进行对着2个信号的处理,nginx的SIGUSR1和SIGUSR2分别代表切割日志与平滑升级。

NGINX的平滑升级和回滚:

NGINX的平滑升级

#实现过程
1.下载并解压源码包 tar -xzf nginx-1.22.1.tar.gz

2.查看原来的编译选项,使用原有编译选项源码编译新版nginx  nginx -V
./configure --user=nginx --group=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 --prefix=/apps/nginx


3.执行make进行编译,不执行make install,因为会将旧版本就行覆盖 make -j 4 

4.备份旧版本 mv old_file{,.bak}

5.将编译的新版本移动到指定的位置(旧版本所在的位置) cp -a nginx /apps/nginx/sbin/

6.检查新版本的nginx是否正常 nginx -t

7.发送user2信号进行平滑升级(此时两个master共存)kill -USR2 `cat /apps/nginx/run/nginx.pid`
旧版本主进程PID的文件重命名为nginx.pid.oldbin


8.给旧的进程发送信号,关闭老的worker  kill -QUIT `cat /apps/nginx/run/nginx.pid.oldbin`
#先关闭旧nginx的worker进程,而不关闭nginx主进程方便回滚

9.#经过一段时间测试,新版本服务没问题,最后退出老的master  kill -QUIT `cat /apps/nginx/run/nginx.pid.oldbin`


# 回滚:
#如果升级的版本发现问题需要回滚,可以重新拉起旧版本的worker
kill -HUP `cat /apps/nginx/run/nginx.pid.oldbin`

#最后关闭新版的master
kill -QUIT `cat /apps/nginx/run/nginx.pid`

#移除新版本的nginx,将旧版本的nginx重新命名为nginx,并检查
rm -f nginx ; mv nginx.bak nginx;
#升级nginx
usr2-->winch-->quit--->hub
备份旧版本、将新版本放到nginx正常的安装路径 -- 此时现在系统中运行的仍然是旧版本

进行语法检查,看新版本的nginx是否能正常加载系统中的配置文件

#USR2 平滑升级可执行程序,将存储有旧版本主进程PID的文件重命名为nginx.pid.oldbin,并启动新的nginx
#旧master是新master的父进程
发送usr2信号给旧版本nginx,此时新的nginx会生成新的master和worker,新旧进程的master和worker共存(此时虽然新旧进程都在监听80端口,但是只有新的master才会接收用户的请求。)

#先关闭旧nginx的worker进程,而不关闭nginx主进程方便回滚
优雅关闭旧的worker进程(WINCH信号),逐步关闭worker进程,主进程不退出 。此时就进程的进程编号文件xxx.oldbin

#测试一段时间后,新版本没问题,就可以关闭旧nginx的master进程。
发送QUIT信号可以推出master进程

#此时如果新版本有问题旧可以回滚:因为旧master的父进程没有关闭
通过给旧nginx发送HUP信号重新加载配置文件,重新生成worker进程

#旧master恢复后,关闭新nginx的master进程

NGINX的配置:

nginx的配置文件中,每一个配置都要以分号结尾。

全局配置:

user:指定启动和运行nginx服务的用户
	例如:user nginx #指定运行nginx的用户为nginx
首页 上一页 1 2 3 4 5 6 下一页 尾页 1/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇在OpenEuler22.09(也适用于CentO.. 下一篇脚本首行中的#!是什么,有什么作..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目