记录主机体验,分享建站经验RSS 订阅 ↗

Linux Nginx 反向代理配置:Ubuntu 实例、HTTPS 与 502 排查

更新于 2026-10-23

在 VPS 上运行的 Node.js 或 Python 应用通常只需监听本机端口,再由 Nginx 对外接收 HTTP/HTTPS 请求。这里以 Ubuntu 上的 127.0.0.1:3000 应用为例,说明最小可行配置、上线验证与故障回退。以下命令是部署示例,不是对某台服务器的实测记录。

先确定流量路径

用户访问域名后,请求先抵达 Nginx,再由 Nginx 转发到应用。建议应用绑定 127.0.0.1,不要为了反向代理而把开发服务的 3000 端口直接向公网开放。域名 A/AAAA 记录应指向 VPS 的可访问地址,安全组和防火墙允许预期的 Web 入口。

Nginx 反向代理流量示意:用户浏览器经 80/443 端口到 Nginx,再转发到 127.0.0.1:3000 应用

Ubuntu 上安装并检查后端

具备 sudo 权限、备份现有站点配置后执行:

sudo apt update
sudo apt install nginx
sudo systemctl status nginx --no-pager
curl -I http://127.0.0.1:3000/

最后一行检查的是应用是否在运行;如果返回连接拒绝,先启动应用,不要通过增加 Nginx 缓冲区掩盖后端故障。下面示例使用 Ubuntu/Debian 常见的 sites-available 目录;其他发行版先看 nginx -T 了解实际载入路径。

配置反向代理并验证

创建 /etc/nginx/sites-available/app.conf,将 example.com 替换为实际域名:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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_connect_timeout 5s;
        proxy_read_timeout 60s;
    }
}
sudo ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/app.conf
sudo nginx -t
sudo systemctl reload nginx
curl -I -H 'Host: example.com' http://127.0.0.1/

若已存在同名链接,不要重复创建;测试失败时不要重载。proxy_pass http://127.0.0.1:3000; 不带 URI,与 proxy_pass http://127.0.0.1:3000/; 的处理规则并非所有场景都相同,特别是 location /api/ 需要重写路径时,应先根据官方文档使用测试路径验证。

HTTPS 上线与安全边界

生产环境应配置域名有效的 TLS 证书,将公网请求改为 HTTPS,并核对 Nginx 证书、私钥路径;申请、续期及 80/443 端口条件取决于证书工具和验证方式。可继续阅读本站的 二级域名 SSL 证书部署指南。不要将未审查的 X-Forwarded-For 直接作为应用鉴权依据;若有上游 CDN/代理,需要明确可信代理范围。

502、404、重定向循环怎么查?

现象 优先检查 验证方式
502 Bad Gateway 应用未启动、监听地址与代理端口不一致、连接超时 curl -I http://127.0.0.1:3000/;读取 /var/log/nginx/error.log
404 server_name 匹配、location 路由、应用实际路径 携带 Host 请求头本机测试,检查应用访问日志
重定向循环 应用是否识别 HTTPS、CDN 到源站的 TLS 模式 逐跳检查 curl -IL https://example.com/
配置不生效 站点文件未启用或被其他 server 覆盖 sudo nginx -T 查看实际配置

回滚与后续优化

修改前保存配置备份。出现异常先恢复对应站点文件,执行 sudo nginx -t,确认通过后再 sudo systemctl reload nginx。上线后记录后端 5xx、请求延迟及连接数,只有观察到具体瓶颈再调代理缓冲或 keepalive,不要机械复制“最佳性能参数”。官方可查 proxy 模块文档及 upstream 模块文档。

交流与讨论2 条评论

  1. 干货满满!这篇《2025年Linux服务器Nginx反向代理配置终极指南》系统梳理了性能优化与安全实践,实操性强,堪称运维工程师的“黄金手册”,强烈推荐收藏备用!

  2. 该文对Nginx反向代理配置的性能调优策略(如worker_processes、keepalive_timeout、gzip压缩)与安全实践(如HTTP严格传输安全HSTS、限制请求方法)进行了系统性阐述,尤其在TCP/UDP负载均衡与SSL/TLS优化方面具备工程实操价值,建议补充upstream模块的健康检查机制配置以增强高可用性。

评论已关闭。