nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。
1、反/正向代理
(1)正向代理 (代理客户端)即我们所说的”翻墙“、”梯子“。
特点:我们访问的目标服务求是明确的 ,但目标服务器不清楚具体那个客户端访问了它,它只能看到代理服务器的地址
客户端需要配置代理
(2)反向代理 (代理服务器)
特点:代理服务器 代理 业务服务器 对客户端隐藏。用户访问的是代理服务器,此过程用户无感。
客户端不需要配置
2、负载均衡
这里提到的客户端发送的、nginx反向代理服务器接收到的请求数量,就是我们说的负载量
请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则
所以~将服务器接收到的请求按照规则分发的过程,称为负载均衡。
3、动静分离
就是将服务器中的动态资源与静态资源分开部署,需要专门的静态资源服务器
4、nginx配置文件
1 | #全局配置 用于进行nginx全局信息的配置 |
安装nginx
1 | 环境准备 |
卸载nginx
检查 nginx 服务是否在运行
1
ps -ef | grep nginx
停止Nginx服务
1
2
3
4
5// 设置了软连接
nginx -s stop
// 没有设置软连接
/usr/sbin/nginx -s stop查找、删除Nginx相关文件
1
2
3
4
5
6
7// 查找nginx 所在文件夹
whereis nginx
// 删除相关文件夹
rm -rf /usr/sbin/nginx再使用yum清理
1
yum remove nginx
结束
安装 nginx 却无法访问
1 | 关闭firewalld 与iptables防火墙 或开通端口 如果怕不安全开通即可 |
nginx配置文件讲解
1 | Nginx配置文件 nginx.conf 和default.conf 讲解 |
软链接
1 | ln的链接分 软链接 和 硬链接 两种: |
1 | 软链接又叫符号链接, |
配置文件实例
1 |
|
代理
1 | #user nobody; |
本地配置 https
Certbot 生成证书需要公网ip服务器+域名
本地环境生成 ssl 证书使用工具 mkcert. 生成(本地环境 Ubuntu 18.04)
安装使用 mkcert 参考 Ubuntu 标签文章
配置 ssl
这里使用 nginx 默认的ssl 配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20server {
listen 443 ssl;
server_name localhost;
ssl_certificate /home/ubuntu/.local/share/mkcert/localhost.pem;
ssl_certificate_key /home/ubuntu/.local/share/mkcert/localhost-key.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
}给指定开放端口配置 ssl
主要是 nginx 反向代理静态页面用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15server {
listen 8080 ssl;
server_name localhost;
ssl_certificate /home/ubuntu/.local/share/mkcert/localhost.pem;
ssl_certificate_key /home/ubuntu/.local/share/mkcert/localhost-key.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
root /home/ubuntu/project/webrtc-test/;
index index.html index.htm;
}
}给 ws 服务 配置 ssl
在 443 端口服务中配置
1
2
3
4
5
6
7
8
9
10location /socket/ {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}此处 ws 后端服务部署在localhost:3000,前端地址:url: ‘wss://localhost/socket/‘
地址 多少一个 / 都会报错,连接不了
给后端接口配置 ssl
在443端口服务中配置
1
2
3
4
5
6
7
8location /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-F $proxy_add_x_forwarded_for;
client_max_body_size 100m;
}
负载均衡配置
多台服务器部署后台服务,通过负载均衡分担压力。失败的服务不会影响转发到好的服务
1 | upstream xuanchen_server { |
一个端口配置多个web访问
在服务器 …/webTwo 目录下部署 /, …/webTwo/dist 部署第二个web项目,通过location 匹配不同的资源。后端服务配置好代理就🆗了。
也可以将两个web 项目部署在 8001,8002 两个其他端口,然后在8000 端口代理到指定服务。
/dist 路径下项目打包根目录设置为/dist
1 | server { |
nginx 代理 eventSource 接口
1 | server { |
代理图片静态资源
1 | # 单独代理图片资源 |
gzip压缩
1 | http { |
- 本文作者: 王不留行
- 本文链接: https://wyf195075595.github.io/2022/06/17/programming/linux/nginx/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!