一台主机承载多个网站时,通常由反向代理接收外部请求,再按域名转发到对应服务。配置的关键不是把所有域名塞进同一张证书,而是让 DNS 指向正确、代理按主机名分流、证书覆盖访问域名。下面以常见的 Nginx 配置说明国际业务主机配置反向代理与多站点证书的方法。
先确定域名和证书范围
先列出实际使用的域名,例如 example.com、www.example.com 和 shop.example.net。每个域名都要确认 DNS 记录指向代理主机的公网地址;若配置了 AAAA 记录,还要确认 IPv6 同样能到达该主机,否则部分访问者可能绕过正常的 IPv4 路径。
证书可以按站点分别申请,也可以将同一组织管理的多个域名放进一张多域名证书。前者便于分开续期和撤换,后者管理起来较集中,但证书更新会同时影响所列域名。通配符证书适合覆盖同一层级的多个子域名,但不自动覆盖根域名,且常需通过 DNS 验证。证书的 SNI 机制允许服务器在 TLS 握手时根据访问域名选择对应证书,因此多个 HTTPS 站点可以共用 443 端口。
按域名建立代理规则
国际业务主机配置反向代理与多站点证书的方法,应先让每个站点拥有独立的 Nginx 虚拟主机配置。每个配置块写明自己的 server_name、证书路径和后端地址,避免不同站点误用默认规则。
- 确认解析:为各域名设置 A 记录;确实提供 IPv6 服务时再配置 AAAA 记录。等待解析生效后,从外部确认域名到达代理主机。
- 准备后端:记录每个应用监听的地址和端口,例如本机的 127.0.0.1:3001 与 127.0.0.1:3002。后端端口不必直接暴露公网。
- 配置 HTTP 分流:为每个域名建立监听 80 的 server 块,匹配 Host 后转发至对应后端,或先跳转到 HTTPS。转发时通常应设置 Host 为 $host,并传递 X-Forwarded-For 与 X-Forwarded-Proto,便于应用识别原始访问信息。
- 申请证书:使用支持 ACME 的客户端为域名申请证书。HTTP-01 验证通常要求外部能够访问 80 端口;DNS-01 则需按提示添加 TXT 记录,适用于无法开放 80 端口或申请通配符证书的场景。
- 启用 HTTPS:在对应的 443 server 块中配置证书文件和私钥文件,再设置同样的域名匹配与后端转发规则。不要把私钥放在公开可下载目录中,并限制其读取权限。
- 检查并重载:运行 Nginx 配置检查命令 nginx -t,通过后再重载服务。逐个访问域名,确认页面内容、证书域名和跳转结果都正确。
续期与排错重点
证书不是一次配置后永久有效。确认 ACME 客户端的自动续期任务已启用,并在续期成功后让 Nginx 重新读取证书;可用客户端提供的模拟续期功能检查流程。若续期失败,优先检查域名解析是否仍指向代理、验证所需端口是否可达,以及 DNS-01 的 TXT 记录是否填入正确位置。
遇到证书错配,检查浏览器访问的域名是否写入对应 server_name,以及客户端是否发送了正确的 SNI。遇到跳到了其他网站,检查 Nginx 是否命中默认站点、域名是否重复配置。若应用生成了错误的 HTTP 链接,核对 X-Forwarded-Proto 是否传递,并确认后端应用信任来自代理的转发头。
配置选择与适用情况
站点数量少、域名归属不同或需要独立维护时,分别申请证书通常更容易排查;多个域名由同一团队统一管理,且希望减少证书文件数量时,可评估多域名证书。选择前应考虑续期流程、域名变更频率和私钥管理,不要只按证书数量判断。
总的来说,国际业务主机配置反向代理与多站点证书的方法可以概括为:先核对 DNS,再按域名配置代理和证书,最后验证续期及访问路径。每个域名逐项测试,比一次性修改所有站点更容易发现问题。
常见问题
多个网站可以共用一个 IP 和 443 端口吗?
可以。服务器根据 TLS 握手中的 SNI 和后续 HTTP 主机名区分站点,前提是各域名配置匹配且证书覆盖访问域名。
每个站点都必须单独申请证书吗?
不必须。可使用分别签发的证书,也可使用覆盖多个域名的证书;选择时应考虑独立续期、管理便利和域名变更影响。
申请证书时一定要开放 80 端口吗?
不一定。HTTP-01 验证通常需要 80 端口可访问;DNS-01 通过 DNS 记录验证,具体要求取决于证书客户端和验证方式。
证书显示有效,但访问时仍出现安全警告怎么办?
检查证书是否包含当前访问的完整域名、Nginx 是否命中正确站点,以及证书链是否配置完整。也要确认浏览器访问的域名与地址栏一致。