Nginx 反向代理配置
时间:2026-10-9 07:30 作者:emer 分类: 无
Nginx 反向代理配置
反向代理是 Nginx 最常用的功能之一,配置很简单。
1. 什么是反向代理
反向代理就是:用户访问 Nginx,Nginx 把请求转发给后端服务器,再把结果返回给用户。
作用:
- 隐藏后端服务器
- 负载均衡
- 统一入口
- 缓存静态内容
2. 基本配置
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
说明:
- proxy_pass:后端地址
- proxy_set_header:传递请求头
3. 常用请求头
location / {
proxy_pass http://127.0.0.1:8080;
# 传递域名
proxy_set_header Host $host;
# 传递真实IP
proxy_set_header X-Real-IP $remote_addr;
# 传递完整请求链
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 传递协议
proxy_set_header X-Forwarded-Proto $scheme;
}
4. 超时配置
location / {
proxy_pass http://127.0.0.1:8080;
# 连接超时
proxy_connect_timeout 60s;
# 发送超时
proxy_send_timeout 60s;
# 读取超时
proxy_read_timeout 60s;
}
5. WebSocket 代理
location /ws {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
# WebSocket 升级
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
6. 负载均衡
# 定义后端服务器组
upstream backend {
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=2;
server 127.0.0.1:8082 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
}
}
7. 静态文件直接返回
server {
listen 80;
server_name example.com;
# 静态文件直接处理
location ~* \.(js|css|png|jpg|gif)$ {
root /var/www/static;
expires 30d;
}
# 其他请求转发后端
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
}
}
8. 配置生效
# 检查配置
nginx -t
# 重载配置
nginx -s reload
9. 常见问题
1)502 Bad Gateway
- 后端服务没启动
- 后端端口不对
- 后端超时
2)504 Gateway Timeout
- 后端处理太慢
- 调整超时时间
3)获取不到真实IP
- 没配置 X-Real-IP
- 后端没读取请求头
4)WebSocket 连不上
- 没配置 Upgrade 和 Connection 头
10. 生产建议
1)一定要传请求头
- Host
- X-Real-IP
- X-Forwarded-For
2)合理设置超时
- 根据业务调整
- 不要太长也不要太短
3)静态文件 Nginx 直接处理
- 减轻后端压力
- 提高性能
4)开启 gzip 压缩
gzip on;
gzip_types text/css application/javascript;
总结
Nginx 反向代理配置要点:
- proxy_pass 指定后端地址
- 一定要传请求头
- 常用超时配置
- WebSocket 要升级头
- upstream 做负载均衡
- 静态文件直接返回
- 配置完 nginx -t 检查
- 502 检查后端是否启动
- 生产环境传全请求头
反向代理是 Nginx 基本功,一定要熟练掌握。