nginx
nginx用于部署项目
一、基础介绍
主机—–> 操作系统(windows/linux)—–>tomcat/nginx
1.1 nginx基本概念
Nginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的, 能经受高负载的考验 有报告表明能支持高达 50,000 个并发连接数。
Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。
1.2 在windows上安装nginx及使用
1.2.1 安装
naginx版本
- mainline version :主力版本,开发版
- stable version :最稳定的版本,生产环境上建议使用的版本
- legacy versions: 遗留老版本的稳定版
下载
- 选择stable version 或者 点击官网右栏download


选择windows

1.2.2 使用
下载的时zip文件,解压后,进入解压的文件夹,双击nginx.exe即可启动nginx
关于nginx的cmd终端命令 cmd终端切换到nginx的根目录下
nginx.exe: 启动nginx 或者直接双击nginx.exe文件也可启动nginx- 网址输入localhost 页面显示welcome nginx则启动成功
- 每次配置文件修改后都需要重启nginx
nginx -s stop:中断运行nginx -s quit:正常退出运行nginx -s reload: 重启niginx
1.3 在Linux(CentOS)系统安装nginx及使用
1.3.1 安装
1 )终端切换为root用户
- 输入的密码为服务器密码
1 | su |

2)安装依赖
在任意目录下执行
- gcc编译是否安装
1 | 检查安装:yum list installed | grep gcc |
- openssl库编译是否安装
1 | 检查安装:yum list installed | grep openssl |
- pcre库编译是否安装
1 | 检查安装:yum list installed | grep pcre |
- zlib库编译是否安装
1 | 检查安装:yum list installed | grep zlib |
- 一次性安装
1 | 一次性安装: yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y |
( -y 代表自动安装 , 自动选择 Y)
3)下载nginx
- 再切换到/usr/loacl目录下下载Nginx

1 | cd /usr/local |
- 下载
1 | wget http://nginx.org/download/nginx-1.18.0.tar.gz |
- 解压
- 解压后的文件名为:nginx-1.18.0, 该文件就在/usr/local下
1 | tar -zxvf nginx-1.18.0.tar.gz |
4)安装nginx
- 打开nginx解压后路径, 即切换到nginx-1.18.0目录下
1 | cd nginx-1.18.0 |
- 指定安装路径 (–prefix 是指定nginx安装路径), 在终端执行如下2条命令完成安装
- 安装完成后会在/usr/local目录下生成nginx文件夹
1 | ./configure --prefix=/usr/local/nginx |
1.3.2 使用(nginx常用命令)
注意:执行以下命令时,终端先切换到/usr/local/nginx/sbin目录下
启动nginx
- 切换到/usr/local/nginx/sbin文件夹下
1 | ./nginx |
- 或者切换到/usr/local/nginx文件夹下
1 | ./sbin/nginx |
- 或者按配置文件启动
1 | /usr/local/nginx/sbin/nginx -c /usr/local/conf/nginx.conf |
检测nginx是否启动
1 | ps -ef | grep nginx |
- 若启动成功终端如下

重新加载nginx
- 例如修改了nginx.conf后则需要重新加载才能更新修改的配置
1 | ./nginx -s reload |
关闭nginx
1 | ./nginx -s stop |
1.3.3 防火墙问题
若是在windows的虚拟机的linux(CentOS)系统安装的nginx, 则启动nginx后不能在浏览器正常访问,需要开放防火墙对80端口的限制
- 查看f防火墙开放的端口号
1 | firewall-cmd --list-all |
- 设置开放的端口号
1 | firewall-cmd --add-port=80/tcp --permanent |
- 重启防火墙
- 重启后才能看到80/tcp开放成功了
1 | firewall-cmd --reload |

- 终端出现如下提示,则是防火墙没有开启

- 开启,关闭及查看防火墙状态命令
- 开启防火墙:systemctl start firewalld
- 关闭防火墙:systemctl stop firewalld
- 查看防火墙状态:systemctl status firewalld
- 移除端口
- 移除后,也需要重启防火强才能看到移除了
1 | firewall-cmd --remove-port=80/tcp --permanent |
1.4 Nginx的配置文件
- 配置文件的位置
1
2 linux下:/usr/loacal/nginx/conf/nginx.conf
wIndows下: 解压的nginx文件夹/conf/nginx.conf
配置文件的内容 :
1)全局块:配置服务器整体运行的配置指令
- 从配置文件开始到 events 块之间的内容,主要会设置一些影响nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。
- 例如:worker_processes
- 这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约,建议设置为等于CPU总核心数
2)events 块 :影响 Nginx 服务器与用户的网络连接
- events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。
3)http 块
- 这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
- http 块也可以包括 http全局块、server 块。
3.1)http 全局块
- http全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
3.2)server 块
- 这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。
- 每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
- 而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。
3.2.1)全局 server 块
- 最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。
3.2.2)location 块
- 一个 server 块可以配置多个 location 块。
- 这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。
nginx.conf文件
1 |
|
二、Nginx的反向代理
2.1 正向代理与反向代理
正向代理
- 正向代理是由客户端设立的
- 客户端了解代理服务器和目标服务器都是谁
- 帮助实现突破访问权限,提高访问的速度,对目标服务器隐藏客户端的ip地址

反向代理
- 反向代理服务器是配置在服务端的
- 客户端是不知道具体访问的是哪台服务器
- 达到负载均衡,并且可以隐藏服务器真正的ip地址

2.2 反向代理配置
按
nginx-1.18.0\conf打开nginx.conf文件- 添加
include servers/*.conf- 注意添加的位置,在
server上面 include servers/*.conf;: 导入当前文件所在文件夹下的文件夹servers下的所有.conf文件- servers文件夹和文件夹下的文件都是自定义的,是自定义的配置文件
- 注意添加的位置,在

- 添加
servers/test.conf代理配置- 新建
nginx-1.18.0\conf、servers、test.conf文件
1
2
3
4
5
6
7
8
9
10//test.conf
server { //server表示nginx启动的本地服务
listen 80; //80 是nginx本地服务的端口号
server_name localhost; //localhost 是nginx本地服务的域名地址
location / {
proxy_pass http://127.0.0.1:8888/; //nginx代理的地址访问localhost即会跳转到这个地址
proxy_set_header Host $host; //host延用localhost而不是http://127.0.0.1:8888的host
}
}- 新建
也可直接将
test.cong文件的内容加在nginx.conf文件中,效果是一样的,只是这样分离更方便管理不同的配置- 添加在
nginx.conf中server配置的地方
- 添加在
2.3 location路径映射
理解\
- location后面的
“/”指的是上面server_name localhost;的localhost
1 | server { |
location匹配方式
1 | # 1. = 匹配 |
1 | # 2. 通用匹配 |
1 | # 3. 正则匹配 |
1 | # 4. 匹配开头路径 |
1 | # 5. 匹配结尾 |
location匹配优先级
1 | (location = ) > (location /xxx/yyy/xxx) > (location^~) > (location ~ , ~*) > (location/起始路径) > (location/) |
- 完全匹配: 目标路径是localhost/xxx/yyy/xxx 匹配路径也是localhost/xxx/yyy/xxx 完全一致
- 一般匹配从上面的优先级的后面往前匹配直到
(location^~)为止,所以写配置文件的时候按上面的优先级顺序写
三、Nginx的负载均衡
四、Nginx的动静分离
五、Nginx集群
六、部署
6.1 本地部署
6.1.1 方式一:
- 双击nginx-1.18.0文件夹下nginx.exe文件 启动运行
- 网址输入localhost 页面显示welcome nginx则启动成功
- 删除nginx-1.18.0\html文件夹下的文件
- 将需要部署的项目的dist文件夹下的所有文件及文件夹复制到nginx-1.18.0\html文件夹下
- 网址再次输入localhost 则可查看部署项目了
6.1.2 方式二:
- 双击nginx-1.18.0文件夹下nginx.exe文件 启动运行
- 网址输入localhost 页面显示welcome nginx则启动成功
- 将需要部署的项目的dist文件夹复制到nginx-1.18.0文件夹下
- 修改nginx-1.18.0\conf\nginx.conf文件
1 | //修改前 |
6.2远程部署
6.2.1 部署流程
前置步骤:
- 1 购买云服务器,Linux
- 2 购买域名、备案、解析域名与ip匹配
安装软件,在云服务器上
- mysql
- node
- xampp
- nginx
nginx配置转发
- nginx端口设置为80
- 在云服务器上可以开启多个服务
- nginx根据域名转发到对应的云服务器上的服务
- ————- 此处可查看上文:2.3location路径映射—————
- 例如:chu.com 转发到 云服务商开启的localhost:3000服务
- 例如:ckie.com 转发到 云服务商开启的localhost:4000服务
启动服务(node环境)
- 不能直接在终端启动服务,因为终端关闭后,服务也关闭了
- 开启守护进程即终端关闭后,服务仍然运行
- 使用pm2—->pm2官网文档
- 安装:
npm install pm2 -g - 启动:
pm2 start app.js - 查看:
pm2 list - 停止:
pm2 stop app
- 安装:
- 使用pm2—->pm2官网文档
tips
- 免费的https: lets encrypt