nginx配置多域名怎么做?,nginx多域名配置教程详解

nginx配置多域名的本质是让一台服务器通过server_name指令区分不同域名的请求,并为每个域名分配独立的server块,从而实现一个IP承载多个网站。

nginx多域名配置的核心思路与server_name规则

nginx处理多域名请求时,核心机制是HTTP请求头中的Host字段,浏览器访问example.com时,请求头会携带Host: example.com,nginx读取这个字段后,与配置文件中的server_name逐一比对,匹配成功的server块负责处理该请求。

nginx server_name的匹配优先级

nginx的server_name匹配遵循精确匹配优先于通配符,通配符优先于正则的规则,按配置文件顺序从上到下查找。

  • 精确匹配:server_name example.com; 完全一致的域名
  • 通配符匹配:server_name .example.com; 匹配任意子域名
  • 正则匹配:server_name ~^wwwd+.example.com$; 用正则表达式匹配

多域名配置时建议将精确匹配写在前面,通配符写在后面,避免正则匹配干扰正常域名解析。

默认服务器的兜底作用

当请求的Host字段匹配不到任何server_name时,nginx会交给default_server处理,可以在listen指令中指定:

listen 80 default_server;

未指定default_server时,nginx默认使用第一个server块作为默认服务器,多域名配置中设置一个明确的默认服务器,可以防止未知域名访问时跳转到错误页面。

nginx一个服务器配置多个域名的完整示例

假设你有一台云服务器,公网IP为0.113.10,需要同时承载a.com和b.com两个网站,各自拥有独立的站点目录和PHP运行环境。

第一步:创建各自的站点目录

mkdir -p /var/www/a.com
mkdir -p /var/www/b.com

两个目录分别放入各自的index.html或PHP入口文件,确保权限为www-data或nginx运行用户可读。

第二步:编写两个server块

nginx配置多域名的标准写法是每个域名一个server块,推荐将不同站点的配置拆分为独立文件,放在/etc/nginx/conf.d/下,便于后期维护。

a.com的配置文件:

s

nginx配置多域名怎么做?,nginx多域名配置教程详解

erver { listen 80; server_name a.com www.a.com; root /var/www/a.com; index index.html index.php; location / { try_files $uri $uri/ =404; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; } }

b.com的配置文件:

server {
    listen 80;
    server_name b.com www.b.com;
    root /var/www/b.com;
    index index.html index.php;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }
}

第三步:检查配置并重载

nginx -t
systemctl reload nginx

如果配置语法无误,nginx会输出test is successful,此时访问a.com和b.com,两个域名各自返回对应目录的内容,互不干扰,nginx多域名配置怎么做?核心就三步:建目录、写server块、重载nginx。

nginx多域名同一端口的HTTPS方案

现代网站普遍启用HTTPS,nginx多域名配置需要同时处理443端口的SSL证书,一台服务器配置多个SSL证书依赖SNI(Server Name Indication)机制,nginx自1.11.5版本起默认支持SNI,无需额外模块。

为每个域名申请并配置独立证书

使用Let’s Encrypt免费证书是最常见的方案,以Certbot为例:

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

Certbot会自动修改nginx配置,在server块中添加证书路径和443监听,执行完成后,两个域名分别拥有独立的SSL证书。

统一跳转与HTTP自动转HTTPS

行业共识认为,多域名场景下应保持行为一致性,避免部分域名走HTTP、部分走HTTPS,可以在每个server块中添加强制跳转:

server {
    listen 80;
    server_name a.com www.a.com;
    return 301 https://$host$request_uri;
}

这样所有HTTP请求自动跳转到HTTPS,用户访问http://a.com时会自动跳转至https://a.com,不影响其他域名的正常访问。

多域名共用443端口注意事项

nginx多域名同一端口的配置中,443端口可以同时监听多个域名,但每个域名必须绑定自己的证书,证书配置错误时,浏览器会提示证书不匹配,检查配置时可以用:

nginx配置多域名怎么做?,nginx多域名配置教程详解

nginx -T | grep ssl_certificate

确认每个server块引用的证书路径是否正确。

nginx不同域名访问不同目录的配置细节

除了独立站点,还存在另一种常见场景:多个域名共用一个站点目录,但通过不同路径区分内容,比如a.com和b.com都指向同一个WordPress目录,但展示不同语言版本。

使用location区分域名对应的目录

server {
    listen 80;
    server_name a.com;
    location / {
        root /var/www/site/cn;
        index index.html;
    }
}
server {
    listen 80;
    server_name b.com;
    location / {
        root /var/www/site/en;
        index index.html;
    }
}

这种nginx不同域名访问不同目录的写法适合静态站点,两个域名访问同一台服务器,但看到的内容完全不同。

通过变量动态设置根目录

nginx支持在server块内使用if判断或变量赋值:

server {
    listen 80;
    server_name a.com b.com;
    if ($host = a.com) {
        set $site_dir /var/www/a.com;
    }
    if ($host = b.com) {
        set $site_dir /var/www/b.com;
    }
    root $site_dir;
    index index.html;
}

这种写法将两个域名的配置合并到一个server块中,减少重复代码,但可读性略差,业内专家指出,配置复杂时拆分配置文件比使用if更利于排查问题。

反向代理场景下的多域名配置

如果nginx作为反向代理,多域名配置时只需修改proxy_pass的转发目标:

server {
    listen 80;
    server_name api.a.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

nginx多域名配置的常见问题排查

nginx多域名配置后访问不到预期站点,多数情况下是配置细节出了问题,按以下顺序排查,能快速定位原因。

配置未重载导致旧配置生效

修改配置文件后忘记执行systemctl reload nginx,nginx仍在运行旧配置,排查时先执行:

nginx -T | grep server_name

查看当前生效的配置中server_name是否包含新域名。

server_name与域名解析不一致

nginx配置多域名怎么做?,nginx多域名配置教程详解

服务器配置了a.com,但域名的DNS记录未解析到服务器IP,本地测试时可以用curl指定Host头:

curl -H "Host: a.com" http://203.0.113.10

返回200说明nginx配置正确,问题出在DNS解析或域名注册商的解析设置上。

默认服务器覆盖了域名匹配

nginx多域名配置时如果忘记为每个域名设置独立的server_name,且开启了default_server,请求会全部落入默认服务器,检查每个server块是否都有明确的server_name指令,且没有重复定义相同域名。

证书错误导致HTTPS访问失败

多域名配置HTTPS证书时,常见的报错是ssl_certificate路径写错或证书文件权限不足,执行nginx -t会提示具体的证书错误,根据提示修正路径即可。

nginx多域名配置需要花钱吗?nginx本身是开源免费的,服务器和域名的费用由云服务商和域名注册商收取,SSL证书可以免费申请Let’s Encrypt证书,成本可以控制在服务器费用以内。

Q&A:nginx多域名配置常见疑问

nginx一个服务器能配置多少个域名?

理论上nginx配置的域名数量没有硬性上限,取决于服务器性能和配置文件复杂度,每个server块占用少量内存,数百个域名在同一台服务器上运行是可行的,多域名配置时建议将每个域名的server块拆分为独立文件,方便单独禁用或修改某个站点。

nginx多域名配置后访问不了对应网站怎么办?

先执行nginx -t检查配置语法,再执行systemctl reload nginx重载配置,确认域名的DNS解析记录指向服务器IP,且服务器安全组或防火墙开放了80和443端口,用curl -H "Host: 你的域名" http://服务器IP测试nginx是否返回预期内容,如果返回403则检查站点目录权限,返回404则检查root路径是否写错。

同一个IP可以同时配置多个域名的HTTPS证书吗?

可以,nginx通过SNI机制在TLS握手阶段识别域名,为不同域名返回对应的证书,配置时确保每个server块的ssl_certificate指向该域名自己的证书文件,使用nginx -T可以查看所有server块的证书配置,Let’s Encrypt等免费证书签发服务支持多域名申请,Certbot可以自动完成证书安装和续期,整个过程不需要额外付费。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/770884.html

赞 (0)
上一篇 2026年9月2日 12:57
下一篇 2026年9月2日 12:59

相关推荐

  • 双字母域名值钱吗,双字母域名交易价格是多少?

    双字母域名是现存量最稀少的域名品类之一,今天想拿下一枚双字母.com,绝大多数情况下只能从持有人手中高价购买,重新注册基本没有机会,这类域名由26个英文字母两两组合而成,总共只有676个位置,分摊到每个主流后缀后,每一个都称得上独一无二,它们短、好记、辨识度高,被视为互联网资产的硬通货,下面把注册现状、市场价格……

    2026年8月25日
    01194
  • escrow 域名交易靠谱吗,escrow 域名交易

    域名交易选择Escrow核心在于其“资金托管+自动过户”的中立担保机制,能彻底解决买卖双方互不信任的痛点,确保资金安全与域名权属清晰转移,是目前高价值域名交易的首选方案,在2026年的数字资产版图中,域名已不再仅仅是网址入口,而是企业品牌资产的核心组成部分,随着AI生成内容对传统搜索流量的冲击,优质短域名和精准……

    2026年6月13日
    01843
  • 有免费域名吗,免费域名注册申请哪个平台靠谱安全?

    有免费域名,但“完全免费、永久免费、无任何限制”的顶级域名并不存在,现实中能申请的免费域名多为二级域名、三级域名或特定平台的附属服务,用它们做正式网站需要仔细权衡利弊,很多人搜索“免费域名”,其实是希望零成本搞定一个能访问的网址,这个需求完全合理,但免费和稳定、免费和权益之间,往往存在隐性交换,下面我把目前市面……

    2026年8月29日
    01083
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • 域名续费多少钱,续费一年需要多少费用?

    域名续费多少钱没有一个统一答案,主流后缀的续费价格通常在每年几千元到上百元不等,具体取决于域名后缀、注册商定价策略以及是否处于优惠期,对大多数个人站长和中小企业来说,域名续费是每年都要面对的一笔固定支出,看起来只是几十块钱的小事,实际上其中门道不少——同一款域名,在不同平台续费,差价可能达到两倍以上,这篇文章就……

    2026年9月5日
    0983

发表回复

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

评论列表(4条)

  • brave988man的头像
    brave988man 2026年9月3日 10:52

    读了这篇文章,我深有感触。作者对证书的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!

    • 草robot986的头像
      草robot986 2026年9月3日 10:54

      @brave988man:这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是证书部分,给了我很多新的思路。感谢分享这么好的内容!

  • 月月3869的头像
    月月3869 2026年9月3日 10:53

    读了这篇文章,我深有感触。作者对证书的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!

  • 橙ai455的头像
    橙ai455 2026年9月3日 10:54

    读了这篇文章,我深有感触。作者对证书的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!