Nginx 反向代理和 HTTPS 怎么配置?域名、证书与 502 排查

先验证本机应用和 HTTP 链路,再接入 TLS、续期检查与常见代理故障定位

在 Linux 云服务器配置 Nginx 反向代理与 HTTPS,覆盖域名解析、proxy_pass、转发头、配置测试、证书续期、502 和重定向循环排查。

Nginx 反向代理部署的正确顺序是:先确认应用只在本机或内网端口稳定运行,再配置域名和 HTTP 代理,最后申请 HTTPS 证书并验证自动续期。直接从证书步骤开始,会把 DNS、应用监听、防火墙和 Nginx 配置问题混在一起。

本文以单台 Linux 云服务器代理本机应用为例。域名必须已指向服务器,云安全组和主机防火墙需开放 80/443;应用端口不应无条件暴露公网。

从域名到应用的访问链路

域名、HTTPS、Nginx 反向代理和本机应用端口的访问链路
Nginx 终止公网 HTTP/HTTPS,再把请求转发到本机应用端口。

部署前先验证哪些条件

  1. 域名 A/AAAA 记录指向当前服务器;
  2. 80/443 在云安全组和主机防火墙中开放;
  3. 应用在 127.0.0.1:APP_PORT 或受控内网地址监听;
  4. 服务器时间和 DNS 解析正常;
  5. Nginx 包来源与系统版本明确;
  6. 证书申请方式使用官方客户端或受控 ACME 工具。

先从服务器本机验证上游:

curl --fail --show-error http://127.0.0.1:APP_PORT/HEALTH_PATH

替换端口和健康路径。这里失败时先修应用,不要修改 Nginx。

Nginx 反向代理配置怎样写

下面是最小结构示例。域名、端口和配置路径必须按环境替换:

server {
    listen 80;
    server_name YOUR_DOMAIN;

    location / {
        proxy_pass http://127.0.0.1:APP_PORT;
        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 是否带尾部斜杠会影响 URI 映射,包含子路径时必须按 Nginx 规则验证,不能机械复制。

为什么必须先测试配置再重载

sudo nginx -t
sudo systemctl reload nginx
sudo systemctl status nginx --no-pager

nginx -t 成功后再 reload。重载会让新 worker 使用新配置,同时旧 worker 完成已有请求,比直接停止进程更稳妥。

HTTPS 证书怎样接入

证书签发前必须保证域名解析正确,并让 ACME 验证能够访问 80 或使用已经配置的其他验证方式。使用 Certbot 时应按当前操作系统和 Certbot 官方安装文档选择 Nginx 插件,不在文章中固定某个可能过时的软件源命令。

证书签发后检查:HTTPS 页面、证书域名、证书链、HTTP 到 HTTPS 跳转、TLS 到期日和自动续期任务。续期必须执行演练,而不是只看到定时器存在。

WebSocket 和长连接要注意什么

WebSocket 需要正确传递 Upgrade 与 Connection 头;长请求还可能涉及读取超时、缓冲和上游超时。不要全站盲目增加很大的 timeout,应只对确有需要的 location 设置,并同时处理应用端超时。

502、404 和重定向循环怎么排查

  • 502 Bad Gateway:检查上游进程、端口、协议、Unix Socket 权限和应用日志;
  • Nginx 404:检查命中的 server_name、location 和 root/proxy_pass;
  • 应用 404:检查尾部斜杠和上游路径映射;
  • 重定向循环:检查应用是否识别 X-Forwarded-Proto,以及 CDN/LB 的 TLS 终止位置;
  • 证书错误:检查 SNI、域名、证书链和 DNS 是否仍指向旧服务器。

日志和本机请求是主要证据:

sudo tail -n 100 /var/log/nginx/error.log
curl -I http://127.0.0.1:APP_PORT/
curl -I https://YOUR_DOMAIN/

常见问题

应用端口还需要对公网开放吗?

同机反向代理通常只让应用监听 127.0.0.1,由 Nginx 对公网开放 80/443。跨服务器上游则限制为内网或 Nginx 来源。

申请证书一定要开放 80 吗?

取决于 ACME 验证方式。HTTP-01 通常需要 80 可达,DNS-01 使用 DNS 记录验证。应按实际客户端和架构选择。

配置改完直接 restart 可以吗?

先执行 nginx -t,通过后优先 reload。语法错误时直接重启可能让服务无法恢复。

官方资料

如果需要确认云平台账户、充值或服务器部署方向,可通过 Telegram 联系 @heishayun。排障时请提供脱敏后的域名解析、Nginx 配置测试和错误日志。

AWS 教程AWS CloudShell 显示账户验证中怎么办?已验证仍无法创建环境的排查2026-09-15云服务器教程Vue、React 单页应用刷新后 404 怎么办?Nginx History 路由与 API 分流2026-09-13云服务器教程Docker 提示 pull access denied 怎么办?镜像名、仓库权限与登录排查2026-09-13

加入开发者交流社区

与全球开发者、运维和工作室一起交流技术、分享经验、配置、账号与最新优惠信息

  • 云平台使用交流
  • 资源优惠信息
  • 最新教程与资讯
  • 开发者经验分享
联系 Telegram 客服
加入开发者交流社区