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 `
相关文章
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
1192 87
|
编解码 应用服务中间件 Linux
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
804 1
|
负载均衡 应用服务中间件 nginx
Nginx配置与命令
Nginx 是一款高性能的 HTTP 和反向代理服务器,其配置文件灵活且功能强大。本文介绍了 Nginx 配置的基础结构和常用指令,包括全局块、Events 块、HTTP 块及 Server 块的配置方法,以及静态资源服务、反向代理、负载均衡、HTTPS 和 URL 重写等功能实现。此外,还提供了常用的 Nginx 命令操作,如启动、停止、重载配置和日志管理等,帮助用户高效管理和优化服务器性能。
1356 14
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
603 18
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
1008 17
|
数据建模 应用服务中间件 PHP
配置nginx容器和php容器协同工作成功,使用ip加端口的方式进行通信
本示例演示如何通过Docker挂载同一宿主目录至Nginx与PHP容器,实现PHP项目运行环境配置。需注意PHP容器中监听地址修改为0.0.0.0:9000,并调整Nginx配置中fastcgi_pass指向正确的IP与端口。同时确保Nginx容器中/var/www/html权限正确,以避免访问问题。
配置nginx容器和php容器协同工作成功,使用ip加端口的方式进行通信
|
应用服务中间件 网络安全 nginx
配置Nginx以支持Websocket连接的方法。
通过上述配置,Nginx将能够理解WebSocket协议的特殊要求,代理Websocket流量到合适的后端服务器。注意,Websocket并不是HTTP,尽管它最初是通过HTTP请求启动的连接升级,因此保证Nginx了解并能够妥善处理这种升级流程是关键。
2640 10
|
安全 应用服务中间件 网络安全
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
957 0
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
|
Ubuntu 应用服务中间件 Linux
在Ubuntu上配置Nginx实现开机自启功能
至此,Nginx应该已经被正确地设置为开机自启。在Ubuntu中利用 `systemd`对服务进行管理是一种高效的方式,为系统管理员提供了强大的服务管理能力,包括但不限于启动、停止、重启服务,以及配置服务的开机自启动。通过这些简洁的命令,即使是对Linux不太熟悉的用户也能轻松地进行配置。
588 0
|
JSON 前端开发 应用服务中间件
配置Nginx根据IP地址进行流量限制以及返回JSON格式数据的方案
最后,记得在任何生产环境部署之前,进行透彻测试以确保一切运转如预期。遵循这些战术,守卫你的网络城堡不再是难题。
554 3