nginx如何绑定多个域名到同一IP?不同域名如何配置指向?

要将多个域名绑定到同一IP,核心做法是在Nginx的server块中通过server_name指令区分不同域名,并分别配置各自的根目录或代理规则,无需改动系统网络设置。

Nginx多域名绑定同一IP的原理

Nginx监听服务器的80或443端口,当请求到达时,它根据HTTP请求头中的Host字段匹配对应的server_name,同一IP下可以存在无数个server块,只要server_name不重复即可,这种机制让一台服务器能托管多个网站,也是虚拟主机(Virtual Host)的常见实现方式。

零基础入门 Nginx 反向代理配置 | 自定义域名绑定教程 | 从理论到实战的完整指南
加载中
零基础入门 Nginx 反向代理配置 | 自定义域名绑定教程 | 从理论到实战的完整指南

行业共识认为,Nginx在处理高并发静态资源时性能优于Apache,因此国内多数云服务器厂商的LNMP环境默认采用Nginx作为Web服务器,对于个人站长或中小企业,将多个域名指向同一IP能显著节省服务器成本。

nginx多个域名绑定同一IP配置方法

基础配置结构

编辑Nginx主配置文件,通常在/etc/nginx/nginx.conf,或更好的是在/etc/nginx/conf.d/下为每个域名创建独立配置文件,每个域名对应一个server块,示例结构如下:

server {
    listen 80;
    server_name www.example1.com example1.com;
    root /var/www/example1;
    index index.html;
}
server {
    listen 80;
    server_name www.example2.com example2.com;
    root /var/www/example2;
    index index.html;
}

保存后执行nginx -t测试语法,然后systemctl reload nginx重载配置,此时两个域名已绑定到同一IP,访问各自域名会返回不同目录的内容。

不同域名指向不同目录的详细操作

假设服务器IP为0.113.10,你有两个域名domain-a.com和domain-b.com,分别指向两个不同网站,按以下步骤操作:

  1. 创建站点目录

    mkdir -p /var/www/domain-a
    mkdir -p /var/www/domain-b
    echo "This is A" > /var/www/domain-a/index.html
    echo "This is B" > /var/www/domain-b/index.html
  2. 新建配置文件
    在/etc/nginx/conf.d/下创建domain-a.conf:

server {
    listen 80;
    server_name domain-a.com www.domain-a.com;
    root /var/www/domain-a;
    access_log /var/log/nginx/domain-a.access.log;
    error_log /var/log/nginx/domain-a.error.log;
}

再创建domain-b.conf,结构相同,只是server_name和root

nginx如何绑定多个域名到同一IP?不同域名如何配置指向?

路径不同。

  1. 测试并重载
    执行nginx -t确认无误后,nginx -s reload,此时访问domain-a.com显示”A”,访问domain-b.com显示”B”。

所有关键配置都围绕server_name展开,该指令支持精确匹配、通配符(.example.com)和正则匹配,实际部署中,建议为每个域名单独写一个配置文件,便于维护和排查。

同一IP不同域名如何配置HTTPS证书

现在多数网站启用HTTPS,Nginx绑定多域名时需为每个域名配置独立的SSL证书,可以共用一个IP,因为Nginx通过SNI(Server Name Indication)在TLS握手阶段识别域名,配置如下:

server {
    listen 443 ssl;
    server_name domain-a.com;
    ssl_certificate /etc/nginx/ssl/domain-a.crt;
    ssl_certificate_key /etc/nginx/ssl/domain-a.key;
    root /var/www/domain-a;
}
server {
    listen 443 ssl;
    server_name domain-b.com;
    ssl_certificate /etc/nginx/ssl/domain-b.crt;
    ssl_certificate_key /etc/nginx/ssl/domain-b.key;
    root /var/www/domain-b;
}

如果使用Let’s Encrypt免费证书,可以借助Certbot工具为每个域名分别签发,注意,旧版浏览器或某些老客户端不支持SNI,但近年来的主流浏览器和操作系统都完全兼容,若遇到证书错误,先检查server_name是否与域名一致,并确保防火墙放行443端口。

Nginx配置多域名时的常见冲突和优先级

默认server块的作用

当访问的IP没有匹配任何server_name时,Nginx会使用默认server块,第一个加载的server块就是默认server块,或者用default_server参数显式指定。

server {
    listen 80 default_server;
    server_name _;
    return 444;
}

这个配置会丢弃所有未匹配的请求,如果不设置默认server,访问IP时可能直接打开第一个站点的内容,造成安全隐患。

server_name匹配顺序

Nginx按照以下优先级匹配server_name:

  • 精确匹配(如domain-a.com)
  • 通配符前缀(如.domain-a.com)
  • 通配符后缀(如domain-a.)
  • 正则表达式(如~^(www.)?example.com$)

当一个域名同时匹配多个server块时,先匹配精确名称,再按顺序尝试其他规则,多数情况下,一个域名只需配置一个精确名称即可,无需过度使用正则。

配置错误导致500或404的排查思路

nginx如何绑定多个域名到同一IP?不同域名如何配置指向?

遇到网页打不开时,按顺序检查:

  1. 使用nginx -t验证配置文件语法
  2. 检查/var/log/nginx/error.log中的错误信息
  3. 确认DNS解析是否指向当前服务器IP,用dig或nslookup查询
  4. 确认server_name是否与访问的域名完全一致(大小写不敏感,但别带尾部斜杠)
  5. 检查目录权限,Nginx用户(通常是www-data或nginx)必须有读取权限

最常见的坑是忘记在云服务商的安全组或防火墙中放行80和443端口,导致外部无法访问。

多域名反向代理与动态转发配置

如果你有多个子域名或不同域名需要转发到不同后端服务(如不同端口的Node.js、Python应用),用proxy_pass。

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

这种方式常用于前后端分离或微服务架构,注意proxy_pass后面是否带路径会影响实际转发URL,不带路径时,请求原样转发;带路径时,Nginx会替换匹配的location部分。

使用正则匹配泛域名

如果你的所有子域名都指向同一IP,且需要分别处理,可以用正则server_name:

server {
    listen 80;
    server_name ~^(?<sub>.+).example.com$;
    location / {
        root /var/www/$sub;
    }
}

访问test.example.com时会映射到/var/www/test目录,这种配置在动态创建站点或用户独立空间的场景下非常实用,但要注意正则与精确匹配的优先级,避免覆盖你显式定义的域名。

域名解析与Nginx配置的协作关系

多个域名绑定同一IP后,需要确保每个域名的DNS的A记录都指向该IP,在国内云厂商控制台,通常添加解析记录,类型为A,主机记录分别填和www,记录值填服务器IP,TTL可设为600秒,修改解析后一般几分钟到几小时生效。

Nginx本身不参与DNS解析,它只认HTTP请求中的Host字段,所以即使某个域名没有做解析,只要在本地hosts文件里临时映射,也能测试Nginx配置是否正确,例如编辑/etc/hosts添加:

0.113.10 domain-a.com

nginx如何绑定多个域名到同一IP?不同域名如何配置指向?

这样在服务器本机用curl测试,效果等同于外部访问。

多域名日志分离与访问统计

建议为每个域名单独配置日志文件,便于分析访问量和排查问题,在server块内添加:

access_log /var/log/nginx/domain-a.access.log main;
error_log /var/log/nginx/domain-a.error.log warn;

如果使用CDN或负载均衡,真实客户端IP可能被代理隐藏,需要配置set_real_ip_from和X-Forwarded-For处理,访问统计方面,可以结合goaccess或awstats分析日志,得到每个域名的独立访问情况,对于依赖流量的广告投放或GEO数据分析,这部分配置相当关键。

Nginx多域名配置的性能优化要点

当一台服务器绑定多个域名时,连接数会被多个站点占用,优化措施包括:

  • 调整worker_processes为CPU核心数
  • 开启gzip压缩,减少带宽消耗
  • 设置合理的keepalive_timeout,默认65秒可适当降低
  • 使用open_file_cache缓存文件句柄,提升静态文件响应速度

对于访问量区别大的站点,可配置limit_req或limit_conn防止某个域名拖垮整个Nginx进程,合理规划每个站点的日志轮转,使用logrotate定期切割,避免日志文件无限增大。

常见问题解答

Nginx可以绑定多少个域名到同一IP?

理论上没有数量限制,受服务器内存和文件描述符影响,每个server块会占用少量内存,服务器配置足够时,数百个域名都没有问题,但为了维护方便,建议将不同业务的域名分文件存放,并规范命名。

同一个域名可以同时配置多个server块吗?

可以,但server_name必须不同,比如一个处理HTTP跳转,一个处理HTTPS。

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

这种配置属于常用操作,用于强制跳转HTTPS,若相同server_name出现多次,Nginx会使用第一个匹配,其余配置被忽略。

没有备案的域名能与服务器IP绑定吗?

如果服务器在中国大陆,且使用80/443端口对外提供Web服务,域名必须完成ICP备案,否则云服务商会封禁该端口,如果服务器在海外或港澳台地区,则无需备案,国内用户访问未备案域名时,解析可能被拦截,即使Nginx配置成功也无法正常访问。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/613197.html

赞 (0)
像超市的服务器有哪些推荐?,哪个牌子性价比高
上一篇 2026年9月1日 00:52
虚拟机迁移存储方案如何选才高效可靠,热迁移和冷迁移区别?
下一篇 2026年9月1日 00:55

相关推荐

  • 华为云mirror Npm构建报错notarget怎么办,版本不匹配原因是什么

    当你在华为云镜像站执行npm构建时遇到“notarget No matching version found for xxx”错误,核心原因是该版本号在镜像源上不存在或未同步,可通过检查版本号、清理缓存或切换镜像源快速解决,华为云mirror npm构建版本不匹配的常见原因npm包版本号格式错误多数情况下,no……

    2026年7月31日
    2500
  • Shopify和Joomla到底选哪个?建站系统优缺点深度解析

    如果你追求快速上线且不想折腾技术细节,Shopify是首选;若你拥有开发团队、追求极致控制权且预算有限,Joomla则是更灵活的选择,在跨境电商和内容管理的江湖里,Shopify和Joomla就像两种截然不同的生存哲学,前者是拎包入住的精装公寓,后者是给你毛坯房和图纸的自建别墅,2026年的市场环境更加成熟,选……

    2026年6月22日
    2300
  • biz域名怎么查询?.biz域名注册价格多少

    查询.biz域名可通过各大主流域名注册商官网或WHOIS工具进行,biz域名的注册价格通常在30元至80元人民币之间,具体取决于注册商促销力度及是否包含隐私保护服务,在构建企业官网或跨境电商平台时,选择一个合适的顶级域名是品牌数字资产建设的第一步,.biz作为早期开放的商业类通用顶级域名(gTLD),虽然知名度……

    2026年6月24日
    1610
  • 服务器带宽费用怎么算最便宜?服务器带宽一个月多少钱

    要实现服务器带宽费用最低化,核心结论在于:改变计费模式、优化流量策略、选择高性价比服务商,单纯追求单价最低往往会导致服务质量下降,真正的“便宜”是在保障业务稳定的前提下,通过技术手段和采购策略将综合成本降至极限,服务器带宽费用怎么算最便宜? 这不仅是一个采购问题,更是一个架构优化问题, 选择最优计费模式:从“固……

    2026年3月5日
    11600
  • 服务器带宽配置选错了?服务器带宽多少才合适

    网站访问卡顿、加载缓慢,绝大多数情况并非服务器整体性能不足,核心症结往往指向带宽配置失误,带宽作为数据传输的“高速公路”,其宽度直接决定了用户获取数据的速度上限,一旦带宽配置低于实际业务需求,即便服务器拥有顶级的CPU和海量内存,用户端体验依然会陷入“拥堵”,导致客户流失和业务受损,正确的带宽配置策略,必须建立……

    2026年3月7日
    12900
  • Windows美国服务器怎么快速创建文件?如何批量生成

    在Windows美国服务器上快速创建文件,最推荐的方法是使用PowerShell的New-Item命令或FTP客户端批量上传,前者适合代码级自动化,后者适合大文件传输,速度取决于服务器带宽与本地网络状况,为什么选择美国服务器进行文件管理许多开发者和企业选择美国服务器,主要看中其网络基础设施的成熟度以及IP资源的……

    2026年6月18日
    2900
  • html文档代码是什么?html5基础入门教程

    HTML文档代码是构建网页的骨架与灵魂,掌握其语义化标签与结构规范,是提升网站在搜索引擎中可见度、优化用户体验及实现高效内容分发的唯一技术路径,当我们谈论网页时,往往只看到精美的图片和流畅的动画,但在浏览器背后,真正决定页面能否被百度等搜索引擎正确抓取、理解并排名的,是那一行行看似枯燥却至关重要的代码,对于网站……

    服务器宽带 2026年6月9日
    3200
  • IDC机房动环监控系统怎么部署?部署方案及注意事项

    IDC机房动环监控系统部署的核心在于构建“感知-传输-分析-执行”的闭环体系,通过集成动力、环境、安防及IT设备监控,实现7×24小时无人值守与故障预警,从而将非计划停机时间降低至行业最低水平,在数据中心运维领域,动环监控系统早已不再是简单的“报警器”,而是保障业务连续性的神经中枢,随着算力需求的爆发式增长,传……

    2026年6月16日
    3900
  • 杭州IDC租用如何同时规划配置和预算,多少钱一个月?

    在杭州规划IDC租用,配置和预算的平衡点在于先摸清业务真实用量,再按需锁定带宽、机柜和电力,别让“标配”拖着预算跑, 这几年杭州IDC市场卷得厉害,同样配置的报价能从几千到几万,不提前做功课很容易踩坑,咱们就按“需求→配置→预算”这个顺序,一步步拆解,杭州IDC租用配置怎么选?先理清业务场景很多时候配置选不好……

    2026年8月10日
    1300
  • 广州ECS云服务器漏洞修复怎么操作?云服务器漏洞修复方法

    广州ECS云服务器漏洞修复的核心在于建立“检测-修复-验证-防御”的闭环管理体系,而非单纯的一次性补丁更新,企业必须认识到,云服务器的安全状态是动态变化的,唯有通过系统化的运维手段,才能从根本上规避数据泄露与服务中断风险,修复工作的本质是安全运维能力的体现,直接关系到业务连续性与企业信誉, 漏洞现状与紧急响应机……

    2026年3月31日
    8800

发表回复

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