nginx二级域名配置方法是什么?详细步骤教程

先搞清楚Nginx二级域名配置到底难不难

Nginx二级域名配置并不复杂,核心就三步:解析域名、写好server块、重载配置,整个过程十分钟内能搞定。很多人第一次接触时被各种教程绕晕,其实你只要理解了Nginx是把不同域名请求转发到不同目录或端口,剩下的事情就顺理成章了,如果你正在纠结“nginx如何配置二级域名”这种问题,别急,下面我把每一步掰开揉碎讲清楚。

配置二级域名前必须准备的几件事

动手之前,先确认三样东西:一个已经备案的域名、一台装了Nginx的服务器、还有你服务器的公网IP,缺一样都得先补上。

  • 域名备案这个坎,国内服务器绕不开,海外服务器可以跳过,但访问速度可能受影响。
  • Nginx版本建议1.18以上,老版本有些指令不支持,排查起来更麻烦。
  • 服务器系统如果是CentOS、Ubuntu还是Debian,配置路径略有差异,但原理一致。

另外你得明确一个概念:二级域名和主域名在Nginx里是相互独立的server块,互不干扰,比如你主域名是example.com,二级域名是blog.example.com,它们各自对应一个server_name,各自指向不同的网站根目录或反向代理端口。

第一步:域名解析怎么操作最稳妥

二级域名能不能访问,首先看DNS解析,这一步出错,Nginx配置再漂亮也没用。

去你的域名服务商控制台(简米云、酷番云、Cloudflare都行),添加一条A记录,主机记录填你要的二级域名前缀,比如blog,记录值填服务器公网IP,TTL默认600秒即可,不用改。

添加完等几分钟生效,用ping命令验证一下:

ping blog.example.com

如果返回的IP是你服务器的公网IP,说明解析成功,这一步很多人忽略,导致后面反复检查Nginx配置却发现没问题,其实就是解析漏了。

第二步:Nginx配置文件到底该改哪个

这是新手最容易纠结的地方,Nginx的配置入口是nginx.conf,但真正管理站点的是conf.d目录或者sites-available目录,取决于你的系统。

以Ubuntu为例,建议你在/etc/nginx/sites-available/下新建一个文件,比如blog.conf,然后在sites-enabled里做个软链接:

sudo ln -s /etc/nginx/sites-available/blog.conf /etc/nginx/sites-enabled/

CentOS用户直接写在/etc/nginx/conf.d/blog.conf里就行,每个二级域名单独一个配置文件,方便维护,也符合nginx最佳实践。

第三步:server块怎么写才能精准匹配二级域名

这是整个配置的核心,打开你的配置文件,写入下面这段基础结构:

server {
    listen 80;
    server_name blog.example.com;
    root /var/www/blog;
    index index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }
}

这里注意几点:

  • server_name必须和你的二级域名完全一致,包括后缀点。
  • root指向你存放二级域名网站文件的绝对路径,目录要提前建好。
  • listen 80是HTTP默认端口,如果配了HTTPS还要加443端口和证书路径。

如果你想让二级域名代理到某个本地服务,比如Tomcat的8080端口,写法变成这样:

nginx二级域名配置方法是什么?详细步骤教程

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

这种reverse proxy搞法非常常见,尤其是前端分离的项目,api走二级域名,页面走主域名,互不干扰。

检查配置语法和重载Nginx的实操技巧

写完配置别急着重启,先检查语法:

sudo nginx -t

如果显示syntax is ok和test is successful,再执行重载:

sudo systemctl reload nginx

注意是reload不是restart,reload平滑加载新配置,不影响正在处理的请求,这个细节能避免线上服务瞬间中断。

二级域名和主域名共用一个Nginx时如何避免冲突

实际生产环境里,你的Nginx上肯定不止一个站点,可能主域名挂了wordpress,二级域名挂了另一个应用,或者几个二级域名分别对应不同目录,这时候最怕的是server_name写错导致请求被错误的server块接管。

Nginx匹配server_name的优先级是有严格顺序的:先精确匹配,再通配符前缀匹配,然后是正则匹配,所以只要你的精确域名写对了,不会被其他配置抢走。

建议在同一个配置文件里把主域名和二级域名分开写,或者拆成多个文件,但都要明确指定各自的root和index,举个例子:

# 主域名配置
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/main;
}
# 二级域名配置
server {
    listen 80;
    server_name blog.example.com;
    root /var/www/blog;
}

这样访问example.com和访问blog.example.com各走各的文件目录,逻辑清晰,排查问题时一眼就能看出来哪里错了。

配置HTTPS证书时二级域名要不要单独申请

很多人在问二级域名如何配置SSL证书,现在的Let’s Encrypt已经支持泛域名证书,一张证书可以覆盖.example.com和example.com,但泛域名证书只支持一级二级,不支持三级子域名,比如a.b.example.com就不在你的证书覆盖范围内。

如果你的二级域名数量不多,我建议用certbot单独给每个域名签发证书,配置上更灵活,操作步骤也很简单:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d blog.example.com -d example.com

certbot会自动修改你的server块,加上SSL相关配置,如果你已经手动配好了server块,可以用–nginx插件自动改写,省去手动加listen 443 ssl和证书路径的麻烦。

配置完成后记得测试一下HTTPS跳转:

curl -I https://blog.example.com

返回200或301都正常,如果返回证书错误,多半是证书申请的域名和server_name对不上。

三个高频报错场景和解决办法

配置完二级域名后,最常见的三个问题,我都遇到过,也帮身边朋友排查过。

第一个:访问二级域名显示Nginx默认页面或者404。

nginx二级域名配置方法是什么?详细步骤教程

原因多半是root目录不对,或者目录下没有index文件,检查一下你root指向的路径是否存在,并且权限是755以上,另外确认index后面写的是index.html还是index.php,如果用PHP还得配fastcgi_pass。

第二个:解析已经生效,但curl返回的证书不匹配。

这种情况多发生在同一IP上配置了多个SSL证书,Nginx靠SNI区分域名,你需要确保每个server块都独立配置了ssl_certificate和ssl_certificate_key,不能共用一份文件。

第三个:二级域名能访问,但页面里图片和样式全挂了。

这是典型的相对路径问题,页面里的资源用绝对路径写死成了http://example.com/wp-content/…,导致浏览器强制请求主域名资源,解决方法是把数据库里的域名批量替换成新二级域名,或者模板里改成相对路径。

移动端访问是否需要单独配置二级域名

很多站长做移动端时会用m.example.com作为手机站,其实没必要单独配置一套,Nginx完全可以根据User-Agent判断设备然后rewrite到对应目录,但如果你确实需要独立的移动端应用,那么二级域名配置步骤和前面完全一致,只是root目录换成手机端的代码包。

唯一要注意的是,移动端页面建议加上canonical标签指向主域名,避免搜索引擎认为你内容重复,影响百度收录权重。

根据日志反向排查配置问题的思路

如果一切配置都正确,但二级域名就是打不开,这时候别瞎猜,去看Nginx访问日志和错误日志。

tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

错误日志里如果出现invalid hostname,说明server_name里有多余空格或者特殊字符,如果出现Permission denied,那就是目录权限问题,如果出现connect() failed,那是proxy_pass指向的后端服务没启动。

日志是最诚实的,排错靠日志比靠猜高效一百倍。

二级域名做301跳转的正确姿势

有时候你不想用二级域名,而是想把blog.example.com永久跳到example.com/blog,这个需求也很常见,配置写法:

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

注意$request_uri会保留原始路径,这样用户访问blog.example.com/post/1会精准跳转到example.com/blog/post/1,不留死链,这条规则对GEO非常友好,搜索引擎会把二级域名的权重传递给主域名。

与Tomcat或其他Web服务器搭配时要注意的坑

如果你的Java应用部署在Tomcat上,Nginx作为前置代理,二级域名配置稍微有点不一样,Tomcat本身有server.xml里的Host配置,如果Nginx的proxy_pass把域名透传过去,Tomcat会要求虚拟主机匹配,否则返回404。

解决办法有两种,要么在Tomcat的server.xml增加一个Host,name和Nginx里的server_name一致;要么在proxy_pass的时候不带路径,只传IP和端口,然后让Tomcat忽略hostname匹配,修改engine的defaultHost。

我自己踩过这个坑,后来干脆让Nginx按二级域名分流到不同端口,比如blog端口8081,api端口8082,这样Tomcat不用改任何虚拟主机,每个端口对应一个应用,简单粗暴还稳定。

nginx二级域名配置方法是什么?详细步骤教程

百度GEO视角下二级域名的关键词分配策略

如果你配置二级域名是为了做GEO,比如把不同业务板块放在不同二级域名下,这里有一个行业共识:每个二级域名相当于一个独立站点,会分散主域名的权重,所以除非内容体量足够大,否则不建议把关联性很强的页面拆到二级域名去。

业内专家指出,百度对二级域名的收录速度通常比子目录慢,因为蜘蛛需要重新发现和爬取新域名,如果你的核心目标词是“nginx二级域名配置教程”这类词,内容放在主域名子目录下反而更好积累权重。

如果你的二级域名承载的是完全独立的业务,比如一个论坛、一个商城、一个SaaS应用,那就放心大胆用二级域名,用户体验和品牌识别度更重要。

自动化脚本批量配置二级域名的进阶玩法

如果你的业务需要动态创建二级域名,比如用户自助建站,每个用户一个独立二级域名,那手动写配置肯定不现实,这时候可以写个Shell脚本,往conf.d里生成server块,然后reload。

核心逻辑就一句:

echo "server { server_name $user.example.com; root /home/$user/www; }" > /etc/nginx/conf.d/$user.conf
nginx -t && systemctl reload nginx

注意用户输入要严格校验,防止命令注入,只允许字母数字和连字符,另外每个用户目录要独立设置权限,避免越权访问。

Nginx二级域名与主域名同时配置的常见疑问解答

问:二级域名一定得在子目录下建网站吗?
答:不一定,二级域名对应的root可以是服务器上的任意路径,不一定和主域名有物理上的包含关系,你完全可以放在/home/projects/blog下,只要权限正确。

问:同一个二级域名能不能同时指向多个端口?
答:不能,一个server_name只能对应一组listen端口或proxy_pass目标,如果你需要按路径分流到不同端口,用location加proxy_pass区别处理,而不是靠二级域名本身。

问:配置完二级域名后,主域名的HTTPS证书还能用吗?
答:能用,问:配置完二级域名后,主域名的HTTPS证书还能用吗?
答:能用,证书绑定的是域名,只要你的证书里包含主域名,主域名访问不受影响,但二级域名需要单独的证书,或者泛域名证书,否则浏览器会提示不安全。

最后把二次确认配置成功的三个验证点列出来

配置完成后,别急着宣布大功告成,按下面三个步骤过一遍:

  • 在服务器上先用curl -I访问二级域名,确认返回的HTTP状态码和Server头符合预期。
  • 用浏览器无痕模式访问,排除本地缓存干扰。
  • 用ping.chinaz.com这类工具检查全国不同地区的解析是否一致。

只有这三个点都通过,才能说二级域名真正配置成功,整个流程下来,你会发现Nginx二级域名配置的核心不是写代码,而是理清域名解析、server块定义和目录文件三者的对应关系,把这个关系理顺了,以后配置第三个、第四个二级域名,都是一样的套路,熟练之后两分钟一个。

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

(0)
上一篇 2026年9月1日 12:39
下一篇 2026年9月1日 12:40

相关推荐

  • 注册美国域名需要备案吗,美国域名注册流程是什么?

    注册美国域名和注册其他域名本质上没有区别,核心在于选择一家支持美国域名后缀且提供隐私保护的注册商,整个流程线上操作五分钟内即可完成,很多朋友一听到“美国域名”,第一反应就是麻烦:是不是要有美国公司、美国地址、美国银行卡?其实不然,今天咱们就把这事儿掰开揉碎了讲清楚,从底层逻辑到实操细节,一篇说透,到底什么是美国……

    2026年8月30日
    0140
  • 域名注册哪个便宜?域名注册哪里最便宜

    2026年域名注册最便宜的选择并非单一平台,而是取决于域名后缀类型:.com域名推荐阿里云或腾讯云以获取首年优惠,.cn域名首选中国互联网络信息中心(CNNIC)授权代理商,而新兴后缀如.xyz或.top则在NameSilo或GoDaddy等海外平台更具价格优势,域名注册市场的价格体系在2026年已趋于成熟且透……

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

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

      2026年1月10日
      020
  • mobi域名抢注,mobi域名怎么抢注,mobi域名抢注平台

    2026 年 mobi 域名抢注已无“捡漏”红利,核心策略应从“广撒网”转向“垂直场景化布局”,优先锁定高价值行业词与地域性长尾组合,随着移动互联网进入存量博弈阶段,mobi 域名的战略价值在 2026 年发生了根本性转移,曾经被视为“移动端专属”的爆发期早已过去,当前市场更看重域名在特定垂直领域的品牌背书能力……

    2026年5月3日
    01753
  • 解除域名解析

    解除域名解析并不需要联系服务商或提交工单,登录域名控制台删除对应解析记录即可,新配置通常在几分钟到24小时内全球生效,什么场景下必须解除域名解析解除域名解析在网站日常运维中被频繁操作,触发这个动作的多数是以下几种情况,网站更换服务器服务器到期、迁移机房或更换云厂商时,新的服务器会拿到全新的IP地址,旧IP对应的……

    2026年8月19日
    0515

发表回复

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