前言:要逐渐摆脱面板化操作,实际应用场景下好多不能部署面板
1.打开配置文件
sudo vim /etc/nginx/sites-available/default
2.配置上游服务器接受example.com的请求
假设后端服务器 A 的地址是 192.168.1.100:8080
,服务器 B 的地址是 192.168.1.101:8080
。我们给服务器 A 设置权重为 3,服务器 B 设置权重为 1,意味着服务器 A 接收的请求大约是服务器 B 的 3 倍。
# 定义一个名为 backend 的上游服务器组,使用加权轮询策略
upstream backend {
# 服务器 A,权重为 3
server 192.168.1.100:8080 weight=3;
# 服务器 B,权重为 1
server 192.168.1.101:8080 weight=1;
}
# 定义一个监听 80 端口的虚拟主机
server {
listen 80;
# 这里填写你的域名或服务器 IP,如果是测试可使用 IP 地址
server_name example.com;
location / {
# 将请求代理到名为 backend 的上游服务器组
proxy_pass http://backend;
# 设置请求头中的 Host 字段为客户端请求的主机名
proxy_set_header Host $host;
# 设置请求头中的 X-Real-IP 字段为客户端的真实 IP 地址
proxy_set_header X-Real-IP $remote_addr;
# 设置请求头中的 X-Forwarded-For 字段为客户端的 IP 地址和经过的代理服务器 IP 列表
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
其中listen
指定监听的端口,server_name
指定域名,proxy_pass
指定后端服务器的地址和端口,同时设置了一些请求头信息以便后端服务器获取客户端的真实 IP 等信息。
3.检查配置并重启
sudo nginx -t #检查配置
sudo systemctl restart nginx #重启服务
4.对比正向与反向代理
正向代理 “代理” 客户端去访问服务器,为客户端提供服务;而反向代理 “代理” 服务器接收客户端的请求,为服务器提供服务,二者的方向是相反的,所以这种为服务器提供代理服务的方式就被称为 “反向代理”。
类型 | 适用场景 | 主要作用 | 关键特点 |
---|---|---|---|
正向代理 | 个人突破网络封锁(如访问受限外网)、企业内部网络管理(限制上网行为)、匿名访问 | 突破限制访问外部资源、缓存资源提高速度、隐藏客户端 IP | 客户端明确配置使用代理,服务器只知代理 IP |
反向代理 | 高并发网站或应用(如大型电商平台)、需保障安全的服务器(如金融服务后台) | 负载均衡(分配请求到多服务器)、隐藏后端架构、安全防护、内容缓存加速、SSL 卸载 | 客户端无感知,直接访问代理,服务器处理代理转发请求 |