nginx如何配置域名代理多个域名,nginx多域名反向代理配置教程

Nginx配置域名代理多个域名,核心答案就一句话:每个域名对应一个独立的server块,用server_name识别域名,再用proxy_pass转发到各自的后端服务。 这套逻辑在80和443端口都成立,真正容易踩坑的地方不在语法,而在证书匹配、Host头传递和默认server的优先级。

nginx反向代理多个域名怎么配置?先理清server块与请求匹配逻辑

一个请求进来,Nginx怎么知道该找哪个域名

Nginx处理多域名请求时,靠的是“监听端口 + server_name”组合匹配,你可以把它理解成前台分诊:先看请求进的是哪个门,再看挂号条上的域名。

手动安装nginx并 配置多域名访问不同网站
加载中
手动安装nginx并 配置多域名访问不同网站

具体匹配顺序可以记成下面几点:

  • 先匹配listen指令,比如80端口和443端口分开处理;
  • 再匹配server_name,精确域名优先,通配符次之,正则再次之;
  • 如果没有匹配到任何server_name,就会落到该端口的default_server;
  • 如果没显式设置默认server,Nginx通常会把第一个server块当默认。

业内专家指出,多域名代理最容易出问题的地方不是proxy_pass,而是Host头和SNI证书匹配,很多“访问A域名却打开B站点”的故障,根源都在这里。

最小可用配置示例

假设你有两个域名:a.example.com和b.example.com,分别代理到本机8080和8081端口,配置可以写成这样:

# /etc/nginx/conf.d/multi-domain.conf
server {
    listen 80;
    server_name a.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;
    }
}
server {
    listen 80;
    server_name b.example.com;
    location / {
        proxy_pass http://127.0.0.1:8081;
        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_name后面写完整域名,不要带http://或路径;
  • 不同后端就拆不同server块,不要硬塞进一个location里;
  • proxy_set_header Host $host必须加,否则后端可能拿不到原始域名。

改完配置后,别急着刷新浏览器

每次改完Nginx配置,建议按这个顺序检查:

  1. 执行nginx -t,确认语法没有问题;
  2. 执行nginx -T,查看最终合并后的完整配置;
  3. nginx如何配置域名代理多个域名,nginx多域名反向代理配置教程

  4. 执行systemctl reload nginx或nginx -s reload,平滑加载;
  5. 用curl -I -H "Host: a.example.com" http://127.0.0.1测试本机匹配;
  6. 再用curl -I --resolve a.example.com:80:服务器IP http://a.example.com测试外部解析。

这样能快速判断是Nginx匹配问题,还是DNS、防火墙、后端服务的问题。

nginx一个端口代理多个域名:80和443的实操差异

80端口:纯HTTP多域名代理

80端口的配置最简单,多个server块都监听80,靠server_name区分,适合内部测试、临时跳转、旧站迁移,生产环境如果还跑HTTP,建议加一个301跳转到HTTPS。

443端口:HTTPS多域名代理

443端口多域名代理,核心多了SSL证书,每个域名最好有对应的证书,或者用一张多域名证书、通配符证书覆盖,配置片段如下:

server {
    listen 443 ssl;
    http2 on; # Nginx 1.25.1+ 写法,旧版本可用 listen 443 ssl http2;
    server_name a.example.com;
    ssl_certificate /etc/letsencrypt/live/a.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/a.example.com/privkey.pem;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

如果证书和域名对不上,浏览器会直接报错,SNI机制会让Nginx根据客户端带来的域名选择证书,所以server_name和证书覆盖范围必须一致。

国内服务器nginx多域名代理配置教程:从DNS到防火墙

在国内服务器上部署,除了Nginx本身,还要把周边环节一起打通,可以按这个清单走:

  • 域名DNS添加A记录,指向服务器公网IP;
  • 据工信部公开信息,境内服务器提供网站服务通常需要完成备案;
  • 云服务器安全组放行80和443端口;
  • 系统防火墙如firewalld、ufw也要放行;
  • Nginx配置多个server块,分别绑定域名;
  • 用nginx -t和systemctl reload nginx生效;
  • 最后用手机流量和电脑浏览器分别验证。

不同配置方式对比如下:

配置方式 server_name写法 适用场景 主要风险
多server块 a.example.com 不同域名不同后端 证书要一一对应
同server多域名 a.example.com b.example.com 多个域名同一后端 后端需自行区分Host
泛解析 .example.com

nginx如何配置域名代理多个域名,nginx多域名反向代理配置教程

子域名很多 通配符证书成本较高
默认server _或default_server 拦截未绑定域名 配置不当会抢域名

nginx多域名SSL证书配置方法:让HTTPS不串站

单域名证书逐个绑定

最稳妥的方式是每个域名一张证书,各自放在对应server块里,比如用Certbot申请:

certbot --nginx -d a.example.com -d b.example.com

Let’s Encrypt证书有效期通常为90天,建议配置自动续期:

certbot renew --dry-run

确认无误后,把certbot renew加入cron或systemd timer。

泛域名证书和多域名证书怎么选

泛域名证书适合.example.com这种大量子域名的场景,一张证书覆盖所有同级子域名,多域名证书适合域名数量不多、但主域名分散的情况,行业共识认为,生产环境应避免把所有域名都塞进一个server块里,除非它们确实共用同一套后端和同一张证书。

免费SSL证书和付费证书价格差异怎么权衡?

免费证书不是“不能用”,而是服务边界不同,免费证书价格为零,但有效期短,通常没有人工支持和赔付条款,付费证书价格跨度较大,差异主要体现在保修金额、技术支持、通配符覆盖和签发机构信任链上。

对大多数中小站点,免费证书配合自动续期已经够用,对电商、金融、政企类站点,付费证书的赔付和技术支持更有价值,选择时别只看价格,要看证书类型、覆盖域名数量和续期自动化程度。

排查HTTPS串站

如果访问A域名却提示B域名证书,可以按下面顺序排查:

  • 检查是否有listen 443 default_server抢占了未匹配请求;
  • 检查server_name是否精确,避免通配符范围过大;
  • 用openssl s_client -connect 服务器IP:443 -servername a.example.com查看实际返回证书;
  • 检查浏览器是否开启了HSTS,导致旧跳转被缓存;
  • 检查CDN或负载均衡层是否提前终止了HTTPS。

多域名代理进阶:后端区分、日志分离与真实IP

后端如何区分不同域名

如果多个域名代理到同一个后端,后端需要通过Host头或自定义Header区分,比如在Nginx里加:

proxy_set_header X-Site-Name "a";

后端再根据X-Site-Name或Host加载不同站点,这样比开多个后端端口更省资源,但要求后端程序支持多租户或多站点配置。

日志分离

nginx如何配置域名代理多个域名,nginx多域名反向代理配置教程

多域名共用一台Nginx时,建议按域名拆日志:

access_log /var/log/nginx/a.example.com.access.log;
error_log  /var/log/nginx/a.example.com.error.log;

排查问题时,能直接定位到具体域名,不用在混合日志里翻找。

WebSocket和长连接

如果后端有WebSocket,需要加:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

否则连接会在代理层被断开,长连接场景还要关注proxy_read_timeout和keepalive_timeout,避免空闲连接被过早回收。

upstream负载均衡

同一域名需要多个后端时,可以用upstream:

upstream a_backend {
    server 127.0.0.1:8080;
    server 127.0.0.1:8082;
}
server {
    listen 80;
    server_name a.example.com;
    location / {
        proxy_pass http://a_backend;
    }
}

这样Nginx会按默认轮询分发请求,也可以加权重、健康检查等策略。

收束

多域名代理并不复杂,关键是让每个域名有清晰的server块、正确的server_name和匹配的证书,把Host头、默认server、HTTPS证书这三处管住,绝大多数串站和502问题都能提前避开。

Q&A:nginx配置域名代理多个域名常见问题

两个域名可以代理到同一个后端吗?

可以,把两个域名写进同一个server块的server_name,或者分别写server块但proxy_pass指向同一个后端地址,区别在于后端如何区分请求来源,如果后端需要按域名展示不同内容,必须把Host头传过去,或者额外加自定义Header。

nginx多域名代理后,后端如何获取真实客户端IP?

在Nginx的location里加上:

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

后端不要直接读remote_addr,而是读取X-Real-IP或X-Forwarded-For的第一个IP,如果前面还有CDN或负载均衡,需要配置set_real_ip_from和real_ip_header,否则拿到的可能是上一层代理的IP。

nginx配置多个域名后,为什么访问A域名却跳到B域名?

常见原因有三个:B域名所在server块被设成了default_server,抢占了未精确匹配的请求;A域名的HTTPS证书不匹配,浏览器按SNI选择了另一个server块;浏览器或CDN缓存了HSTS策略,把A强制升级到HTTPS后落到了错误配置上,检查listen、server_name和ssl_certificate三项,通常就能定位。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/nginx%e5%a6%82%e4%bd%95%e9%85%8d%e7%bd%ae%e5%9f%9f%e5%90%8d%e4%bb%a3%e7%90%86%e5%a4%9a%e4%b8%aa%e5%9f%9f%e5%90%8d%ef%bc%8cnginx%e5%a4%9a%e5%9f%9f%e5%90%8d%e5%8f%8d%e5%90%91%e4%bb%a3%e7%90%86%e9%85%8d/

赞 (0)
基岩版2b2t服务器怎么用,下载地址在哪里?
上一篇 2026年10月9日 03:25
物联网数据上报异常检测如何保障监控系统?,异常检测方法有哪些?
下一篇 2026年10月9日 03:28

相关推荐

  • cdn发展趋势是什么,cdn发展趋势

    2026年CDN发展趋势已从单纯的“内容分发”全面演进为“云边端协同的智能计算网络”,其核心驱动力由带宽成本优化转向AI推理加速、低延迟交互及边缘安全合规,头部厂商正通过自研芯片与异构算力重构基础设施,算力重构:从传输管道到边缘计算中枢边缘计算与CDN的深度融合过去,CDN仅负责静态资源的缓存与加速,进入202……

    2026年7月12日
    6600
  • 哪里可以获取仿门户网站源码,门户网站源码下载有哪些渠道?

    选择仿门户网站源码的核心在于权衡代码的底层架构稳定性、扩展性以及是否具备应对高并发流量的实战能力,而非单纯追求功能堆砌,如何选择稳定可靠的仿门户网站源码在评估一套门户网站源码时,开发者和企业主往往容易陷入“功能越多越好”的误区,行业共识认为,代码的耦合度与模块化程度才是决定项目生命周期的关键指标, 如果源码采用……

    云计算 2026年7月14日
    600
  • CDN动静分离怎么做,CDN动静分离配置教程

    CDN动静分离的核心结论是:将静态资源(如图片、CSS、JS)与动态请求(如API、数据库查询)分流至不同节点或路径,以此降低源站负载、提升响应速度并优化SEO权重,2026年主流架构中该方案可使首屏加载时间缩短40%以上,为什么2026年必须重构CDN架构?随着Web 3.0应用及AI生成内容(AIGC)的爆……

    2026年7月9日
    17400
  • 直播cdn很贵,直播cdn费用怎么计算

    直播CDN确实昂贵,但这并非技术垄断导致的无解困境,而是由高并发带宽成本、低延迟技术溢价及合规安全投入共同决定的市场常态,通过架构优化与混合云策略可将成本降低30%-50%,为什么直播CDN成本居高不下?核心痛点解析在2026年的数字媒体生态中,直播已不再是简单的视频传输,而是涉及实时互动、AI增强及多端适配的……

    2026年6月17日
    2610
  • adidas cdn是什么,adidas官网加载慢怎么办

    Adidas CDN(内容分发网络)并非单一产品,而是阿迪达斯全球数字化基础设施中用于加速静态资源加载、保障高并发交易稳定性的底层技术架构,其核心价值在于通过智能路由与边缘节点优化,显著提升全球用户访问速度与电商转化率,在2026年的数字经济背景下,品牌官网的加载速度直接关联用户留存与GMV(商品交易总额),阿……

    2026年6月24日
    2700
  • CDN加速授权是什么,CDN加速授权

    CDN加速授权是确保内容分发网络合法合规运行的核心凭证,其本质是服务商对特定IP、域名或带宽资源的许可使用证明,直接决定网站访问速度、数据安全性及合规性,2026年主流云厂商均实行“按量计费+授权绑定”的双轨制模式,CDN加速授权的核心逻辑与2026年行业变革在2026年的数字化基础设施环境中,CDN(内容分发……

    2026年6月16日
    2900
  • cdn怎么查源工具?如何查看cdn源站IP

    查询CDN源站IP最可靠的方法是结合DNS解析查询、历史数据回溯以及端口扫描技术,其中使用在线DNS历史查询工具和Traceroute命令是识别真实源站的核心手段,分发网络(CDN)广泛普及的今天,直接通过域名获取源站IP几乎是不可能的任务,CDN的设计初衷就是隐藏源站,通过边缘节点缓存内容来加速访问并保护后端……

    2026年5月26日
    5800
  • 国内cdn加速哪家好,国内cdn加速哪家最好

    2026年国内CDN加速首选推荐:若追求极致性价比与中小规模业务,推荐阿里云或腾讯云;若侧重金融级安全与超大规模高并发,推荐网宿科技或百度云加速;若需海外节点覆盖,推荐Cloudflare或Akamai,在2026年的数字基建环境下,CDN(内容分发网络)已不再仅仅是简单的静态资源缓存工具,而是融合边缘计算、A……

    2026年5月15日
    8000
  • 谷歌cdn申请流程复杂吗?谷歌cdn申请

    2026年个人开发者无法直接申请谷歌CDN,必须通过Google Cloud Platform(GCP)开通Cloud CDN服务,且需绑定自有域名与后端负载均衡器,这是唯一合规且稳定的官方途径,为什么个人无法直接“申请”谷歌CDN?产品形态的本质差异在2026年的云计算生态中,Google Cloud CDN……

    2026年6月7日
    3900
  • 全球最大的cdn是谁,全球最大cdn排名

    截至2026年,Cloudflare凭借其在边缘计算节点规模、AI推理集成能力及零信任安全架构上的综合优势,被业界公认为全球最大且最具影响力的CDN服务商,其在亚太及中国市场的份额正通过本地化合规策略快速攀升,Content Delivery Network(CDN)早已超越单纯的内容分发工具范畴,演变为数字基……

    2026年5月28日
    3800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注