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

相关推荐

  • 广州gpu服务器创建快照,广州gpu服务器怎么创建快照?

    在广州地区部署高性能计算业务,数据的安全性与业务的连续性是企业运营的生命线,广州gpu服务器创建快照不仅是一项基础运维操作,更是保障核心资产免受勒索病毒、误操作及系统崩溃影响的最高效手段,通过快照技术,企业能够在数分钟内将服务器状态回滚至任意历史节点,将业务中断带来的经济损失降至最低,这是传统数据备份方式无法比……

    2026年3月29日
    9900
  • 服务器nginx配置找不到?,代理服务器如何安装nginx?

    服务器nginx配置通常位于/etc/nginx/nginx.conf或/usr/local/nginx/conf/nginx.conf,具体路径可通过nginx -t命令查看;作为代理服务器配置nginx,核心是设置proxy_pass指令并调整相关参数,服务器nginx配置怎么找很多人在接手服务器时,第一反……

    2026年8月3日
    1000
  • 网站robots.txt文件全面解析

    网站robots.txt文件是告诉搜索引擎爬虫哪些页面可以抓取、哪些需要屏蔽的“交通规则”,配置正确能提升收录效率,配置错误则可能导致重要页面被误杀或资源浪费,robots.txt的核心作用与常见误区很多人一听到robots.txt,第一反应是“这是用来防爬虫的”,或者认为它是SEO的“万能钥匙”,它更像是一个……

    2026年6月25日
    1310
  • HTML文字颜色闪烁怎么做?CSS文字颜色闪烁代码

    HTML文字颜色闪烁效果主要通过CSS动画结合color或text-shadow属性实现,建议优先使用text-shadow方案以兼顾视觉冲击力与页面性能,在网页设计的早期阶段,闪烁的文字常被用作吸引眼球的营销手段,但在2026年的现代Web开发标准下,这种效果的使用场景和实现方式已经发生了根本性变化,用户不再……

    2026年6月10日
    4200
  • 服务器抽拉机构究竟有哪些,服务器抽拉机构如何选择?

    服务器抽拉机构,说白了就是机柜里负责让服务器顺滑进出、并且能稳稳停在半空的那套滑轨组合,主流类型有滚珠滑轨、重型工业滑轨、摩擦滑轨和带助力结构的抽拉系统, 选型时别只盯着“能不能抽出来”,承重、行程、安装空间和长期抽拉的可靠性,才是真正拉开差距的地方,服务器抽拉机构有哪些类型?不止滚珠滑轨那么简单在机房现场看……

    2026年10月2日
    100
  • 服务器带宽怎么选?服务器带宽多少合适?

    服务器带宽的选择,核心在于精准匹配业务模型与并发需求,而非盲目追求大带宽,选带宽的本质,是计算“单位时间内的数据吞吐量”与“用户峰值并发”的平衡点,买大了是成本浪费,买小了则是用户体验灾难,对于绝大多数应用场景,独享带宽优于共享带宽,按量计费适合波动业务,固定带宽适合稳定业务,以下是根据多年实战经验总结的选型逻……

    2026年3月6日
    11700
  • 极品芝麻官有哪些服务器推荐,哪个最稳定?

    选服务器,核心先看三条:优先选刚开服的官方双平台新服,其次看世界频道实时热度,最后避开采用第三方渠道包的返利服,玩家只需要记住一个最朴素的标准——谁家新区人多、开服时间新,就去哪里驻扎,极品芝麻官哪个服务器人多?先搞懂官方服与渠道服的本质区别很多玩家打开游戏后第一眼就懵了,九游、华为、OPPO、VIVO、应用宝……

    2026年9月27日
    000
  • 互动直播api怎么用?互动直播api接口申请流程

    互动直播API通过标准化接口实现音视频流与业务逻辑的深度耦合,是构建高并发、低延迟定制化直播场景的核心技术底座,在2026年的数字内容生态中,直播早已超越了简单的“开播-观看”模式,转向了高度互动、实时反馈与数据驱动的商业闭环,对于开发者而言,直接处理底层音视频协议如同在迷雾中航行,而调用成熟的互动直播API则……

    2026年6月4日
    4000
  • 上行带宽和下行带宽区别?上行带宽和下行带宽哪个重要?

    上行带宽是指从本地设备向互联网发送数据的速度,下行带宽是指从互联网向本地设备接收数据的速度,对于绝大多数家庭用户而言,下行带宽决定了你看视频、刷网页的快慢,而上行带宽则决定了你发文件、视频通话的质量,在实际的网络应用场景中,这种差异直接影响了用户的网络体验,尤其是在直播、云存储和远程办公日益普及的今天,上行带宽……

    2026年3月5日
    16100
  • 如何用phpMyAdmin复制WordPress数据库?phpMyAdmin复制数据库详细步骤

    使用phpMyAdmin复制WordPress数据库的核心在于通过“导出-修改-导入”流程,配合SQL语句批量替换旧域名,从而实现网站环境的无缝迁移或备份还原,许多站长在迁移站点、搭建测试环境或备份数据时,往往被复杂的命令行工具劝退,利用phpMyAdmin这一图形化界面工具,不仅能降低操作门槛,还能有效避免直……

    2026年6月24日
    1600

发表回复

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