nginx配置和热部署实践

简介: nginx配置和热部署实践

一、nginx配置文件

1.配置文件

cd /var/nginx_1.17/conf/

给配置文件语句加高光

mkdir -p ~/.vim
cp -r /root/nginx-1.17.10/contrib/* ~/.vim/
vim nginx.conf

2.nginx配置文件语法

  • nginx.conf是由指令和指令块组成
  • 每行语句都得有分号结束,指令和参数之间都是有空格分隔的
  • 指令快可以由大括号{},组织多条语句
  • nginx.conf使用#表示注释符号
  • nginx支持用$变量名
  • nginx支持include语句
  • nginx部分指令支持正则表达式,如rewrite重写

3.include

建立文件夹,每个站点一个conf文件

/var/nginx_1.17/conf
mkdir extra
cd extra/
touch index1.conf
cd .. 
vim nginx.conf

加上

include extra/*.conf;

cd extra/
touch www.conf
touch blog.conf
touch bbs.conf

二、nginx.conf参数

1.user参数

ps -ef | grep nginx

工作进程的用户是nobody

vim /var/nginx_1.17/conf/nginx.conf

useradd www
passwd www
nginx -s reload

查看下

ps -ef | grep nginx

2.nginx.conf重要的指令块

核心功能都在http{}指令块里面,http{}块还包含了以下指令

  • server{}指令快,对应一个站点配置,反向代理,静态资源站点
  • location{},对应一个url
  • upstream{},定义上游服务,负载均衡池

3.nginx命令行

nginx启停指令,-s参数,指的是给nginx进程发送某种信号
nginx #初次启动,直接输入nginx,如启动后再执行该命令,就会提示端口冲突
nginx -s stop #停止nginx进程
nginx -s reload #平滑重启,利用reload可以在不重启nginx进程的情况下,重新读取配置文件

4.nginx-master信号传递

  • master主进程是不处理请求的,而是分配请求发给worker进程,主进程负责重启,热加载,热部署等等
  • master是根据nginx.conf中,worker_process定义启动时创建的工作进程数
  • 当worker运行后,master就处于一个等待的状态,等待用户的请求来临,或者系统信号
  • 系统管理员可以发送kill指令,或者nginx -s 信号,这样的形式操控nginx


三、nginx热部署功能实践

1.热部署的特点

nginx作为一个优秀的web服务器,优秀的反向代理服务器,并且nginx也支持高可用的特性,nginx还支持热部署的特点。

热部署的特点:再不重启或者关闭进程的情况下,新的应用直接替换旧的应用

比如:更换nginx的二进制版本

2.大致流程

  • 备份旧的程序:二进制文件 备份nginx命令
  • 覆盖旧的二进制文件
  • 发送USER2信号发给旧的master进程
  • 发送WINCH信号给旧的master进程
  • 发送QUIT信号给旧的master进程

3.环境准备

nginx程序版本

nginx -v

准备一个新的nginx版本

wget http://tengine.taobao.org/download/tengine-2.2.0.tar.gz

nginx工作模式是master-work

刚才所说的nginx支持reload重载,仅仅是nginx的master进程,在检查配置文件正确之后,则更新,错误则会返回异常,正确的情况下也不会更改已经建立的worker,只会等待worker处理完毕请求之后,杀死旧的worker,然后再从新的配置文件中,运行出新的worker(一旦更换了配置文件,reload master主进程,那么手下的worker也就会被换一批了)

nginx还提供了热部署功能,特点是:在不影响用户体验的情况下,进行软件的版本升级,也就是不主动杀死worker,更换软件的二进制命令

4.备份旧nginx二进制文件

cd /var/nginx_1.17/sbin/

mv nginx nginx_1.1.7

5.下载编译安装新的nginx

cd ~
tar -zxvf tengine-2.2.0.tar.gz
cd tengine-2.2.0
./configure --prefix=/var/nginx_1.17 --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-threads --with-file-aio
make && make install

6.检查一下新版的nginx信息

cd /var/nginx_1.17/sbin/
ls

我们有两个版本的nginx了

[root@localhost sbin]# nginx -v
Tengine version: Tengine/2.2.0 (nginx/1.8.1)
[root@localhost sbin]# nginx_1.1.7 -v
nginx version: nginx/1.17.10

7.检查当前nginx状态

ps -ef | grep nginx

8.发送user2信号

此时发送user2信号给旧的master process,租用是使得nginx旧的版本停止接收用户请求,并且切换为新的nginx版本

kill -USR2 8290

9.此时再次检查新的nginx进程状态

ps -ef | grep nginx

10.发送WINCH信号

此时发送WINCH信号,给旧的master进程,让旧的master进程优雅的退出

kill -WINCH ` cat /var/nginx_1.17/logs/nginx.pid.oldbin `
相关文章
|
21天前
|
缓存 前端开发 JavaScript
终极 Nginx 配置指南(全网最详细)
本文详细介绍了Nginx配置文件`nginx.conf`的基本结构及其优化方法。首先通过删除注释简化了原始配置,使其更易理解。接着,文章将`nginx.conf`分为全局块、events块和http块三部分进行详细解析,帮助读者更好地掌握其功能与配置。此外,还介绍了如何通过简单修改实现网站上线,并提供了Nginx的优化技巧,包括解决前端History模式下的404问题、配置反向代理、开启gzip压缩、设置维护页面、在同一IP上部署多个网站以及实现动静分离等。最后,附上了Nginx的基础命令,如安装、启动、重启和关闭等操作,方便读者实践应用。
234 84
终极 Nginx 配置指南(全网最详细)
|
10天前
|
JavaScript 应用服务中间件 开发工具
vue尚品汇商城项目-day07【53.nginx反向代理配置】
vue尚品汇商城项目-day07【53.nginx反向代理配置】
22 4
|
10天前
|
缓存 应用服务中间件 nginx
nginx如何配置?配置项都是什么意思?
nginx如何配置?配置项都是什么意思?
27 1
|
13天前
|
应用服务中间件 nginx Docker
docker应用部署---nginx部署的配置
这篇文章介绍了如何使用Docker部署Nginx服务器,包括搜索和拉取Nginx镜像、创建容器并设置端口映射和目录映射,以及如何创建一个测试页面并使用外部机器访问Nginx服务器。
|
29天前
|
负载均衡 网络协议 Unix
Nginx负载均衡与故障转移实践
Nginx通过ngx_http_upstream_module模块实现负载均衡与故障转移,适用于多服务器环境。利用`upstream`与`server`指令定义后端服务器组,通过`proxy_pass`将请求代理至这些服务器,实现请求分发。Nginx还提供了多种负载均衡策略,如轮询、权重分配、IP哈希等,并支持自定义故障转移逻辑,确保系统稳定性和高可用性。示例配置展示了如何定义负载均衡设备及状态,并应用到具体server配置中。
|
1月前
|
应用服务中间件 nginx
一文搞定Nginx配置RTMP!
一文搞定Nginx配置RTMP!
74 3
|
1月前
|
Ubuntu 应用服务中间件 数据库
Nginx配置:阻止非国内IP地址访问的设置方法
此外,出于用户隐私和法律合规性的考虑,应慎重考虑阻止特定国家或地区IP地址的决策。在某些情况下,这可能被视为歧视性或违反当地法律。
65 2
|
13天前
|
应用服务中间件 nginx 索引
7-15|Nginx配置
7-15|Nginx配置
|
2月前
|
负载均衡 应用服务中间件 网络安全
Django后端架构开发:Nginx服务优化实践
Django后端架构开发:Nginx服务优化实践
43 2
|
2月前
|
应用服务中间件 Linux PHP
【Azure 应用服务】App Service For Linux 环境中,如何修改 Nginx 配置中 server_name的默认值 example.com
【Azure 应用服务】App Service For Linux 环境中,如何修改 Nginx 配置中 server_name的默认值 example.com