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.comdomain-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_nameroot

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,用dignslookup查询
  4. 确认server_name是否与访问的域名完全一致(大小写不敏感,但别带尾部斜杠)
  5. 检查目录权限,Nginx用户(通常是www-datanginx)必须有读取权限

最常见的坑是忘记在云服务商的安全组或防火墙中放行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_fromX-Forwarded-For处理,访问统计方面,可以结合goaccessawstats分析日志,得到每个域名的独立访问情况,对于依赖流量的广告投放或GEO数据分析,这部分配置相当关键。

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

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

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

对于访问量区别大的站点,可配置limit_reqlimit_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

相关推荐

  • WordPress数据库在哪?WordPress数据库路径查询

    WordPress数据库默认存储在服务器上的wp-content目录之外的独立文件夹中,通常位于网站根目录或托管服务商指定的数据分区,核心文件名为wp-config.php中配置的数据库名,而非某个具体的物理文件路径,很多刚接触WordPress的站长在迁移网站或排查故障时,都会陷入一个误区,试图在服务器文件管……

    2026年6月25日
    1400
  • 广州gpu服务器租用流程复杂吗?广州gpu服务器租用价格多少钱

    广州GPU服务器租用的核心在于明确业务需求匹配、严格筛选具备本地化运维能力的IDC服务商、以及执行标准化的部署与交付流程,企业应优先选择如简米科技等具备T3+级别机房资源与深度技术支撑的服务商,以规避隐性成本并确保计算密集型业务的连续性,需求界定:精准匹配算力与业务场景租用流程的起点并非询价,而是对自身业务场景……

    2026年3月28日
    11000
  • 网站https证书异常怎么解决?https证书过期怎么更换

    HTTPS服务证书异常会导致浏览器拦截访问、显示不安全警告,并严重损害网站SEO排名与用户信任,解决核心在于确保证书有效、域名匹配且服务器配置正确,当用户试图访问一个网站时,如果浏览器地址栏出现“不安全”或红色警告标志,这通常意味着HTTPS服务证书出现了异常,对于站长和管理员而言,这不仅是技术故障,更是流量流……

    2026年6月5日
    2700
  • 互联网云网络统计怎么做?云网络流量监控指标有哪些

    互联网云网络统计的核心在于通过实时数据采集与多维分析,帮助企业精准监控带宽利用率、延迟波动及故障率,从而优化IT架构并降低运营成本,云网络统计为何成为企业数字化转型的基石在过去,网络管理往往依赖于人工巡检和事后复盘,这种滞后性导致许多企业在面对突发流量高峰或隐蔽性攻击时措手不及,随着混合云架构的普及,网络拓扑变……

    2026年6月3日
    3600
  • hk域名哪里注册最便宜?,域名备案需要什么资料?

    对于寻求hk域名哪里便宜的用户,答案通常指向几家国际知名注册商或国内代理的促销活动,而注册的域名可以在哪里查看,则取决于你的注册商后台或第三方DNS管理平台,hk域名哪里便宜?对比主流注册商价格与陷阱香港域名(.hk)因其独立的域名体系和不强制备案的特性,在跨境电商、海外业务站及个人博客中热度较高,但不同渠道的……

    2026年7月31日
    500
  • 武汉大带宽服务器租用,独享共享有何区别,哪个更划算?

    弄清楚独享和共享带宽的区别,是租用武汉大带宽服务器前必须做的功课,简单说,独享带宽让你独占资源,性能稳定;共享带宽则多人共用,价格便宜但波动大,独享和共享带宽区别,核心差异在哪?带宽类型直接影响服务器对外服务的质量,独享带宽指用户租用固定上限的带宽资源,例如100Mbps独享,无论邻居是否满载,你都能用到这个量……

    服务器宽带 2026年8月9日
    200
  • html5服务器是什么?html5服务器搭建教程

    HTML5服务器并非独立硬件,而是指支持HTML5标准及WebSocket等实时通信协议的Web服务器环境,其核心价值在于通过前后端分离架构实现高性能、跨平台的即时交互体验,在2026年的技术语境下,谈论“HTML5服务器”往往是一个概念上的误用或简化,HTML5是客户端浏览器渲染的标准,而服务器端负责处理逻辑……

    2026年6月11日
    3500
  • html全选js怎么实现?js全选代码怎么写

    在HTML中实现全选功能,核心在于通过JavaScript获取复选框元素集合,并遍历将其checked属性同步为主控复选框的状态,这是前端交互中最基础且高频的DOM操作场景,很多开发者在初次接触前端交互时,往往觉得全选功能只是几行代码的事,但在实际生产环境中,尤其是面对动态渲染的数据列表或复杂的表单提交时,简单……

    2026年6月11日
    2610
  • 什么是HTTPDNS?HTTPDNS解析原理及优势解析

    HTTPDNS通过绕过传统DNS解析,直接通过API获取IP,从而解决域名劫持、解析慢及跨网调度难的问题,是提升App网络体验的核心基础设施,为什么传统DNS解析成了网络体验的瓶颈在移动互联网的早期阶段,绝大多数应用依赖运营商提供的本地DNS服务器进行域名解析,这种模式虽然成本低廉,但随着业务复杂度的提升,其局……

    2026年6月2日
    3800
  • 深圳服务器租用如何判断是否靠谱,哪家服务商好?

    判断深圳服务器租用是否靠谱,核心在于考察服务商资质、机房环境、网络质量、售后响应以及价格透明度,缺一不可,深圳服务器租用哪家好?从资质开始看资质与背景:正规服务商必须有“证”行业共识认为,判断服务商是否靠谱,首先要看它的经营资质,正规的IDC服务商会公开营业执照和IDC许可证,你可以要求对方提供这些文件,或者通……

    2026年8月10日
    500

发表回复

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