安全与运维

VPS反向代理怎么配?

说明如何用 Nginx 将多个域名转发到同一台 VPS 上的不同应用,涵盖 DNS、配置、HTTPS、检查和常见故障排查。

想让多个域名共用一台服务器,关键是让反向代理按域名把请求送到不同应用。VPS配置反向代理实现多站点托管,常见做法是用 Nginx 接收 80、443 端口的请求,再转发到本机不同端口。应用无需直接暴露在公网,配置也方便逐站调整。

先确定请求如何流转

例如,同一台机器上有两个 Web 应用:一个监听本机 3000 端口,另一个监听 4000 端口。访问者打开不同域名后,Nginx 根据请求中的 Host 信息选择对应端口。这里的端口仅是示例,实际值应以应用的监听设置为准。

先确认应用确实能在服务器本机访问,并尽量让它们只监听回环地址。公网侧通常只需开放网站使用的 80 和 443 端口;应用端口不必为了代理而向所有来源开放。这样可以减少直接暴露应用服务的风险。

配置前检查域名和端口

  1. 在域名服务商的 DNS 管理页面,为每个站点添加指向服务器公网地址的 A 记录。只有服务器已配置可用 IPv6 时,才添加 AAAA 记录。
  2. 确认服务器防火墙和云平台网络规则允许外部访问 80、443 端口。若规则未放行,Nginx 配置正确也可能无法从公网打开。
  3. 用本机请求或应用日志确认两个站点分别运行在预期端口;不要仅凭进程存在就认定服务可用。
  4. 安装 Nginx。安装命令因系统发行版和软件源不同而异,使用系统维护的包管理工具,并确认服务能够启动。

用 Nginx 按域名转发

在 Nginx 的站点配置目录中新建配置文件。下面以两个自有域名和两个本机端口说明结构;保存前,将域名和端口替换为实际值。

server { listen 80; server_name site-a.example; 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; } }

第二个站点照此添加独立的 server 块,把 server_name 改为第二个域名,并将 proxy_pass 的端口改为 4000。配置中的转发头用于把原始主机名、客户端地址及访问协议传给后端;应用是否识别这些信息,还要看其自身设置。

  1. 启用新配置文件;具体操作取决于系统的 Nginx 目录布局。
  2. 运行 Nginx 配置检查命令 nginx -t。看到语法通过后,再重新加载 Nginx;检查失败时先修正报错行,不要直接重启。
  3. 分别用两个域名访问,查看页面是否来自对应应用。若 DNS 尚未更新,可先检查解析结果和服务器日志。
  4. 为每个域名配置 TLS 证书,并让 Nginx 在 443 端口提供 HTTPS。证书续期机制也应一并确认;不能只配置证书而忽略后续续期。

选择 Nginx 还是 Caddy

Nginx 适合需要细分转发规则、已有 Nginx 运维经验,或希望手动掌控 HTTPS 配置的场景;配置项较多,首次设置证书和续期需要多做一步。Caddy 的 HTTPS 自动化配置较省事,适合希望减少证书维护操作的站点,但仍需正确设置域名解析、端口和应用转发。两者都能承担反向代理,选择应看维护习惯,而不是认为其中一种适用于所有项目。

采用 VPS配置反向代理实现多站点托管时,站点数量并非唯一限制因素。实际承载能力还受应用负载、内存、带宽和请求类型影响;新站点上线后应检查资源使用与错误日志,而不是仅凭域名数量判断容量。

常见故障怎么查

  • 出现 502:检查后端应用是否运行、监听端口是否正确,以及 Nginx 所在环境能否连接该端口。
  • 打开了错误站点:核对 DNS 指向、server_name 拼写和重复的站点配置;Nginx 会按监听端口及主机名匹配请求。
  • HTTPS 报错:确认访问域名与证书覆盖名称一致,并检查证书是否过期、443 端口是否可达。
  • 应用记录的地址不对:确认已传递代理请求头,并检查应用是否信任来自本机代理的转发信息;不要无条件信任公网传来的同名请求头。

常见问题

一个公网 IP 能托管多个网站吗?

可以。多个域名解析到同一公网 IP 后,Nginx 可按域名区分请求,并转发到不同后端。

每个网站都要单独占用一个公网端口吗?

通常不需要。外部访问可共用 80、443 端口,由代理根据域名分流;后端应用使用各自端口。

应用一定要绑定 127.0.0.1 吗?

不一定,但若代理与应用在同一台服务器,绑定回环地址通常能避免应用端口直接暴露公网。多机部署则需按网络和防火墙规则设置。

按域名解析、后端监听、代理规则和 HTTPS 顺序逐项核对,就能完成 VPS配置反向代理实现多站点托管;变更配置后先检查语法,再 reload,并分别验证每个域名。

需要选择适合业务的方案?

告诉我们业务地区、配置和预算,客服可协助推荐产品。

相关文章