参考资料

  1. Nginx的配置与管理
  2. PHP-FPM绑定本机所有IP详细说明以及案例
  3. nginx配置
  4. 如何设置Nginx的Gzip压缩?
  5. Nginx作为Web服务器的优势
  6. Nginx gRPC代理服务器详细说明以及案例
  7. Nginx重启脚本
  8. Nginx代理缓存配置详细说明以及案例

nginx配置反向代理

nginx配置反向代理

什么是反向代理

反向代理(Reverse Proxy)是服务器前的一道“中转站”。客户端请求先到达 Nginx,再由 Nginx 根据规则将请求转发给后端的应用服务器(如 Tomcat、Node.js、Python 等),并将响应返回给客户端。对企业网站而言,反向代理能隐藏真实后端地址、实现负载均衡、统一 HTTPS 证书管理,并提升整体安全性。

前置条件

在开始配置前,请确认:

  • 已安装 Nginx(推荐使用官方源或发行版仓库安装的稳定版)
  • 拥有服务器 root 或 sudo 权限
  • 已准备好后端服务地址(如 `http://127.0.0.1:8080`)
  • 已解析域名到当前服务器(如需通过域名访问)

基础反向代理配置

以下是一个最小可用的反向代理示例,将来自 `example.com` 的请求转发到本机 `8080` 端口的后端服务。 nginx 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_set_header X-Forwarded-Proto $scheme; } } 配置说明:

  • `proxy_pass`:后端服务地址,支持 IP、域名和 Unix 套接字。
  • `proxy_set_header`:将必要的请求头传递给后端,保证应用能获取客户端真实 IP 和原始协议。
  • `location /`:匹配所有路径,可根据需要更改为 `/api`、`/admin` 等更具体的路径。

路径与动静分离场景

当后端 API 与静态资源需要分开处理时,可配置多个 `location`。以下配置将 `/api` 请求转发至后端服务,而静态文件直接由 Nginx 处理: nginx server { listen 80; server_name example.com;

后端动态请求

location /api/ { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }

静态资源

location /static/ { alias /var/www/example/static/; expires 7d; access_log off; }

其他请求

location / { proxy_pass http://127.0.0.1:8080; } } 注意事项:使用 `alias` 时需确保路径以 `/` 结尾,且目录权限正确。若希望 Nginx 直接返回固定页面,可使用 `return 403;` 或 `try_files` 配合错误页。

WebSocket 反向代理

若后端提供 WebSocket 服务(如在线聊天、实时推送),需要在 Nginx 中显式升级协议,否则连接会中断。配置示例: nginx server { listen 80; server_name ws.example.com; location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 3600s; proxy_send_timeout 3600s; } } 其中 `proxy_read_timeout` 建议根据业务心跳间隔调整,避免空闲连接被过早关闭。

HTTPS 反向代理

为保障数据传输安全,强烈建议启用 HTTPS。使用 Certbot 获取免费证书是最简单的方式: bash sudo certbot --nginx -d example.com 该命令会自动修改 Nginx 配置并启用 HTTP/2。手动配置 HTTPS 时,参考以下结构: nginx server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; 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-Proto $scheme; } } server { listen 80; server_name example.com; return 301 https://$host$request_uri; }

负载均衡配置

当后端有多台服务器时,可在 `upstream` 块中定义服务器组,并让 `proxy_pass` 指向该组。Nginx 默认采用轮询算法,也支持 `least_conn`、`ip_hash` 等策略。 nginx upstream backend { server 192.0.2.10:8080 weight=3; server 192.0.2.11:8080 weight=1; server 192.0.2.12:8080 backup; keepalive 32; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_set_header Host $host; } }

  • `weight` 表示权重,权重越高分配更多请求。
  • `backup` 标记备用服务器,正常时只处理主服务器出现故障后的请求。
  • `keepalive` 开启后端连接复用,减少握手开销,提升性能。

通用安全建议

  • 仅允许必要的 HTTP 方法,可在 `location` 中限制 `limit_except GET POST { deny all; }`
  • 为后端接口配置访问控制(IP 白名单或 Basic Auth)
  • 隐藏 Nginx 版本号:在 `http` 块中添加 `server_tokens off;`
  • 对敏感响应头(如 `X-Powered-By`)进行清理
  • 日志中避免记录明文令牌或密码,必要时可对 `$request_uri` 做脱敏处理

验证与生效

修改任何 Nginx 配置后,务必先测试配置语法是否正确,再平滑重载服务: bash nginx -t nginx -s reload `nginx -t` 会输出 `syntax is ok` 和 `test is successful`。若提示错误,请根据输出检查具体行。重载不会中断现有连接,是安全可靠的生效方式。

常见排错思路

  • 出现 `502 Bad Gateway`:检查后端服务是否启动、监听地址是否与 `proxy_pass` 一致,以及防火墙是否放行。
  • 出现 `404 Not Found`:检查 `location` 前缀和 `proxy_pass` 的路径拼接规则。
  • 页面能打开但无样式:确认静态资源路径是否正确,或 `location` 顺序是否被误匹配。
  • 登录后跳转异常:在 `location` 中检查是否遗漏了 `proxy_set_header Host $host;`,后端重定向可能依赖该字段。

总结

Nginx 反向代理配置的核心在于理解 `proxy_pass` 的行为、`location` 的匹配顺序以及请求头传递规则。建议先在测试环境验证完整流程,再部署到生产。以上配置示例均可直接复制修改使用,如需特定业务场景(如按 URL 参数分流、灰度发布)的详细配置,可进一步咨询技术团队。如有进一步需求,随时告诉我。

AIGEO优化摘要

AI可读摘要:nginx配置反向代理 什么是反向代理 反向代理(Reverse Proxy)是服务器前的一道“中转站”。客户端请求先到达 Nginx,再由 Nginx 根据规则将请求转发给后端的应用服务器(如 Tomcat、Node.js、Python 等),并将响应返回给客户端。对企业网站而言,反向代理能隐藏真实后端地址、实现负载均衡、统一 HTTPS 证书管理,并提升...
常见问题:
nginx配置反向代理主要讲了什么?

nginx配置反向代理 什么是反向代理 反向代理(Reverse Proxy)是服务器前的一道“中转站”。客户端请求先到达 Nginx,再由 Nginx 根据规则将请求转发给后端的应用服务器(如 Tomcat、Node.js、Python 等),并将响应返回给客户端。对企业网站而言,反向代理能隐藏真实后端地址、实现负载均衡、统一 HTTPS 证书管理,并提升...

nginx配置反向代理适合哪些人参考?

适合正在了解文章信息、进行对比筛选,或希望快速获得结论的用户参考。

阅读nginx配置反向代理时应重点看哪些内容?

建议重点关注标题、摘要、正文说明、图片资料和更新时间。

AIGEO评分:95/100
作者:王壹杰
时间:2026-09-08 21:02:56
来源:https://bt.ciilii.com/