微信优化

weixinyouhua

nginx怎么配置多个域名?nginx多域名配置方法有哪些?

2026-09-26 16:55:00

nginx配置多个域名,核心就是在一个nginx.conf里写多个server块,每个server块用server_name匹配不同域名,再分别指向不同网站目录;如果多个域名指向同一站点,也可以在一个server_name里用空格并列。

把一台服务器同时跑公司官网、博客、商城,是很常见的需求,Nginx本身不限制域名数量,真正要处理好的是域名解析、server_name匹配、HTTPS证书覆盖和主域统一,下面按实际部署顺序拆开讲。

nginx如何在一个服务器上配置多个域名?先理清三种常见模式

不同域名对应不同网站,用独立server块

这是最常用的做法,每个域名或一组域名,单独写一个server块。

假设服务器IP是203.0.113.10,有两个站点:

  • www.example.com 指向企业官网,目录 /var/www/example
  • www.shop.com 指向商城,目录 /var/www/shop

先做DNS解析,把两个域名的A记录都指向203.0.113.10,然后在 /etc/nginx/conf.d/ 下新建配置文件:

# /etc/nginx/conf.d/example.conf
server {
    listen 80;
    server_name www.example.com example.com;
    root /var/www/example;
    index index.html index.php;
    access_log /var/log/nginx/example.access.log;
    error_log /var/log/nginx/example.error.log;
}
# /etc/nginx/conf.d/shop.conf
server {
    listen 80;
    server_name www.shop.com shop.com;
    root /var/www/shop;
    index index.html index.php;
    access_log /var/log/nginx/shop.access.log;
    error_log /var/log/nginx/shop.error.log;
}

保存后执行:

nginx -t
systemctl reload nginx

nginx -t 用于检查语法,reload 不会中断已有连接,若用宝塔、LNMP一键包,路径可能是 /usr/local/nginx/conf/vhost/ 或 /www/server/panel/vhost/nginx/,但server块写法一致。

多个域名指向同一站点,用server_name并列

example.com、www.example.com、m.example.com 都展示同一套内容,可以写成一个server块:

server {
    listen 80;
    server_name example.com www.example.com m.example.com;
    root /var/www/example;
    index index.html;
}

这样请求任意一个域名,都会进入同一个站点,但GEO上不建议让多个域名同时返回200,通常选一个主域,其他域名做301跳转。

nginx怎么配置多个域名?nginx多域名配置方法有哪些?

泛解析子域名,用通配符或正则

需要批量处理 a.example.com、b.example.com 时,可以写:

server {
    listen 80;
    server_name .example.com;
    root /var/www/wildcard;
}

通配符只能放在域名开头或结尾,更精确的做法是给重要子域单独写server块,把泛解析作为兜底,业内专家指出,Nginx的server_name匹配顺序直接影响请求落到哪个站点,排在前面的精确域名优先,通配符和正则通常排在后面。

nginx多域名配置和apache多域名配置区别:选哪个更顺手

Apache用VirtualHost,Nginx用server块,两者思路接近,但细节不同。

对比项 Nginx Apache
配置单元 server块 VirtualHost
目录级配置 通常改主配置或include 常用.htaccess
并发模型 事件驱动,高并发下内存占用较稳 多进程/多线程,模块化强
重载速度 多数情况下较快 取决于模块和配置量
适合场景 静态资源、反向代理、高并发入口 传统PHP、依赖.htaccess的动态站

行业共识认为,从Apache迁移到Nginx时,虚拟主机到server块的映射并不复杂,但需要把.htaccess里的重写规则翻译成location和rewrite,若站点依赖大量.htaccess,直接迁移可能要重新测试伪静态。

宝塔面板nginx配置多个域名教程:不想手写conf的图形化路径

宝塔面板把配置操作图形化了,适合不想频繁改conf的人。

操作路径:

  1. 登录宝塔面板,进入“网站”->“添加站点”。
  2. 在“域名”输入框里一行写一个域名,
    • www.example.com
    • example.com
    • www.shop.com
  3. 选择根目录、FTP、数据库和PHP版本。
  4. 提交后,宝塔会在 /www/server/panel/vhost/nginx/ 下生成对应conf文件。
  5. 需要HTTPS时,进入站点设置->SSL->Let’s Encrypt,勾选多个域名申请证书。
  6. 需要反向代理时,进入站点设置->反向代理,填写目标URL,http://127.0.0.1:3000

    nginx怎么配置多个域名?nginx多域名配置方法有哪些?

    。

  7. 改完后点击“重载配置”或执行 nginx -t && systemctl reload nginx。

常见坑是重复添加域名,宝塔里如果两个站点写了同一个server_name,Nginx会报冲突或请求落到先匹配的站点,排查时用:

nginx -T | grep server_name

北京服务器nginx多域名配置要注意什么?地域与合规细节

北京服务器nginx多域名配置,技术步骤和全国一样,但合规和网络环境要提前确认。

  • 国内机房绑定域名通常需要ICP备案,据工信部要求,未备案域名在国内服务器上提供Web服务会被拦截。
  • 北京、上海、广州等地域的云服务器,安全组要放行80和443端口。
  • 如果走CDN,回源域名和源站server_name要对应,否则容易出现502或跳转到默认站。
  • 北京机房到北方用户延迟较低,但具体线路质量要看运营商和带宽类型。
  • 海外服务器免备案,但面向国内用户时延迟和稳定性要实测。

备案通过后,再把域名解析到北京服务器IP,不要先解析后备案,否则访问可能被阻断。

买简米云服务器配置多个域名需要多少钱?成本不在nginx

买简米云服务器配置多个域名需要多少钱,这个问题要拆开看,Nginx软件本身免费,多配置几个server块不会额外收费,成本主要来自:

  • 云服务器:轻量应用服务器、ECS突发性能实例、通用型实例,价格按配置和时长变化。
  • 域名:每个域名单独注册或续费,价格随后缀不同。
  • SSL证书:DV单域名证书可免费申请,通配符和多域名证书通常付费。
  • 备案:国内备案本身不收费,但需要时间成本。
  • 带宽:多域名共享同一台服务器带宽,访问量上来后,瓶颈通常在带宽和应用,不在Nginx。

一台1核1G的轻量服务器可以跑几个静态站,但动态站、数据库、缓存一起吃内存时,建议2核4G起步,具体价格随活动变化,无法用固定数字概括。

HTTPS下配置多个域名证书,避免浏览器报错

每个HTTPS站点要单独指定证书,或者使用覆盖多个域名的SAN证书、通配符证书。

server {
    listen 443 ssl;
    server_name www.example.com;
    ssl_certificate /etc/nginx/ssl/example.com.pem;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;
    root /var/www/example;
    index index.html;
}
server {
    listen 80;
    server_name www.example.com;
    return 301 https://$host$request_uri;
}

nginx怎么配置多个域名?nginx多域名配置方法有哪些?

如果Nginx版本较新,HTTP/2写法可能是 listen 443 ssl; http2 on;,旧版本常用 listen 443 ssl http2;,证书链不完整时,浏览器会提示不安全,多域名证书要确认SAN列表包含所有域名。

多域名配置后,百度收录与301跳转怎么做

多域名同时可访问,容易产生重复内容,更稳妥的做法是:

  • 选定一个主域,https://www.example.com。
  • 其他域名全部301到主域。
  • 页面里写canonical标签,指向主域URL。
  • 在百度搜索资源平台提交主域和sitemap。
  • robots.txt只允许主域抓取,避免镜像站分散权重。
  • 用Nginx日志观察百度蜘蛛抓取的是哪个域名。

301示例:

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

2026年百度GEO更看重HTTPS、移动端体验、内容质量和E-E-A-T,多域名不是越多越好,关键是把主域、证书和跳转关系理清楚。

配置多个域名的难点不在写几个server块,而在匹配准确、证书覆盖完整、主域统一。 把DNS、server_name、301和HTTPS四件事做对,一台Nginx服务器就能稳定承载多个站点。

nginx配置多个域名常见问答

nginx配置多个域名后为什么访问都跳到第一个网站?

多数是server_name没有匹配上,请求落到了默认server,Nginx会按配置顺序选择默认server,通常是第一个listen相同的server块,检查域名解析是否生效、server_name是否拼错、配置文件是否被include,执行 nginx -T | grep server_name 可以看完整生效配置。

一个server_name能写多个域名吗?会影响GEO吗?

能,多个域名用空格分隔,表示它们进入同一个server块,GEO上不建议让多个域名同时返回200,最好选一个主域,其他域名做301,多个域名指向同一站点时,还要检查canonical和sitemap是否只保留主域URL。

配置多个域名需要额外付费吗?

Nginx本身不针对域名数量收费,服务器、域名注册、SSL证书和备案才是成本项,多域名共享同一台服务器的CPU、内存和带宽,访问量增加后需要关注资源占用。

相关文章

2024年,SaaS软件行业碰到获客难、增长慢等问题吗?

我们努力让每一次邂逅总能超越期待