nginx配置反向代理
参考资料
nginx配置反向代理
nginx配置反向代理
反向代理是 Nginx 最常用的功能之一。您可以将客户端请求转发给内部服务器(如 Tomcat、Node.js 或另一台 Nginx),并由 Nginx 统一处理外部访问。它像一位“前台接待员”,外部客户只看到接待员,而真正的业务人员则在后台工作,这样既隔离了内部网络,又能轻松实现负载均衡、缓存和 HTTPS 加密。 以下配置基于 Nginx 1.18+,请根据实际路径和域名替换示例内容。
一、最小化反向代理配置
修改 `nginx.conf` 中对应的 `server` 块,或新建一个站点配置文件(如 `conf.d/proxy.conf`): 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` 指定后端服务地址。若后端为本地端口则写 `http://127.0.0.1:8080`;若为远程服务器则写 `http://192.168.1.10:8080`。
- `proxy_set_header` 用于传递客户端原始信息,否则后端只能看到 Nginx 的地址,无法获取真实用户 IP 以及原始协议。
二、按路径转发到不同后端
当同一域名下需要根据路径分流时,可使用多个 `location`: nginx server { listen 80; server_name example.com; location /api/ { proxy_pass http://192.168.1.10:3000; proxy_set_header Host $host; } location /static/ { proxy_pass http://192.168.1.11:8080; proxy_set_header Host $host; } location / { proxy_pass http://127.0.0.1:9000; } } 注意:`proxy_pass` 末尾有无 `/` 会影响匹配路径的传递规则。例如 `proxy_pass http://backend;`(不带斜杠)会将完整匹配的 URI 传给后端;而 `proxy_pass http://backend/;` 会将以 `location` 匹配到的剩余部分转发。建议在实际业务中先验证路径是否符合预期。
三、常用进阶设置
1. 负载均衡
将请求分发到多个后端,提升可用性: nginx upstream backend_pool { server 192.168.1.10:8080 weight=3; server 192.168.1.11:8080; server 192.168.1.12:8080 backup; } server { listen 80; server_name example.com; location / { proxy_pass http://backend_pool; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } `weight` 为权重,`backup` 表示备用节点,仅在主节点不可用时启用。
2. 透传 WebSocket
如果后端是 WebSocket 服务,需要额外配置: nginx location /ws/ { proxy_pass http://backend_ws; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 60s; }
3. 配置 HTTPS 反向代理
推荐您启用 HTTPS,可使用免费证书或现有证书: nginx server { listen 443 ssl; server_name example.com; ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key; ssl_protocols TLSv1.2 TLSv1.3; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header X-Forwarded-Proto https; } } 同时建议将 HTTP 请求重定向到 HTTPS,避免明文传输: nginx server { listen 80; server_name example.com; return 301 https://$host$request_uri; }
四、验证与重载
修改配置后,必须执行以下两步: bash
1. 测试配置语法是否正确
nginx -t
2. 平滑重载配置,不影响正在运行的连接
nginx -s reload 若 `nginx -t` 显示 `syntax is ok`,说明配置无错误,即可生效。如果输出包含 `[emerg]`,请根据提示检查行号和路径。
五、注意事项
- 请确保后端服务已启动,且防火墙允许 Nginx 与后端通信。例如后端在本地,则监听 `127.0.0.1` 即可;若跨机器,需放行对应端口。
- 内网后端响应超时,可在 `location` 中调整 `proxy_connect_timeout`、`proxy_read_timeout`,推荐初始值分别为 5s 和 60s。
- 不建议在 `proxy_pass` 中直接拼接变量路径,可能引发访问异常或安全风险。
- 如果代理地址中包含正则或 `if` 逻辑,务必先了解 Nginx 的匹配优先级,避免错误转发。
反向代理配置并不复杂,遵循“先测试、后重载”的原则,您就能安全地为应用增加网关层。如有进一步需求,随时告诉我。
AIGEO优化摘要
nginx配置反向代理主要讲了什么?
nginx配置反向代理 反向代理是 Nginx 最常用的功能之一。您可以将客户端请求转发给内部服务器(如 Tomcat、Node.js 或另一台 Nginx),并由 Nginx 统一处理外部访问。它像一位“前台接待员”,外部客户只看到接待员,而真正的业务人员则在后台工作,这样既隔离了内部网络,又能轻松实现负载均衡、缓存和 HTTPS 加密。 以下配置基于 N...
nginx配置反向代理适合哪些人参考?
适合正在了解文章信息、进行对比筛选,或希望快速获得结论的用户参考。
阅读nginx配置反向代理时应重点看哪些内容?
建议重点关注标题、摘要、正文说明、图片资料和更新时间。
时间:2026-09-08 21:13:25
来源:https://bt.ciilii.com/

