微信优化

weixinyouhua

nginx配置二级域名怎么设置?nginx配置二级域名教程

2026-09-15 02:51:03

nginx配置二级域名最直接的做法,是在对应server块里用server_name指定完整二级域名,再通过root或proxy_pass把它指向静态目录或本地服务端口。

nginx配置二级域名怎么设置:从server_name到生效

很多个人站长和运维第一次接触二级域名时,会把解析和nginx配置混在一起,实际上两边各做一步,访问链路才完整。

配置前先把域名解析到服务器

在简米云、酷番云或Cloudflare的DNS控制台,给主域名添加一条A记录:

  • 主机记录填二级域名前缀,blog
  • 记录类型选 A
  • 记录值填服务器公网IP
  • TTL保持默认

如果服务器有安全组,需要在云控制台放行80端口,HTTPS站点放行443端口,国内云厂商的安全组默认不一定放行80,这一步漏掉后,nginx配置再正确也访问不了。

nginx二级域名配置文件详解:一个最小静态站点

假设你要做一个独立博客静态站,二级域名为 blog.example.com,网站文件放在 /var/www/blog。

最小可用配置如下:

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

这里每个字段的作用很明确:

  • listen 80:监听IPv4的80端口
  • server_name blog.example.com:告诉nginx,访问这个二级域名时进入当前server块
  • root:文件根目录
  • index:默认索引文件,找不到时按顺序尝试

nginx的匹配逻辑,行业共识认为会优先精确匹配 server_name,再匹配前导通配符,最后才是正则,所以写二级域名时,完整域名比 .example.com 优先级更高,不容易被通配配置抢走。

保存后用两条命令完成检查与加载

改完配置文件,不要直接重启服务,先在服务器执行:

nginx -t

看到 syntax is ok 和 test is successful 后,再执行:

nginx -s reload

reload会平滑加载新配置,不会中断已有连接,与 systemctl restart nginx 相比,reload更适合线上环境。

nginx配置二级域名指向不同端口:前后端分离最常用的方式

二级域名很多时候不是指向静态目录,而是指向一个运行中的后端服务。api.example.com 指向本机8080端口的Java服务,admin.example.com 指向本机3000端口的Node服务。

nginx配置二级域名怎么设置?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;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

proxy_pass 把请求转给后端,proxy_set_header 保留原始域名和客户端IP,避免后端日志里全是127.0.0.1。

proxy_pass末尾斜杠会影响路径转发

这是很多人踩过的坑。proxy_pass 末尾加不加 ,转发路径会不一样:

  • proxy_pass http://127.0.0.1:8080;:保留原始URI,访问 /api/user 转发为 /api/user
  • proxy_pass http://127.0.0.1:8080/;:替换匹配部分,访问 /api/user 可能转发为 /user

做二级域名整站转发时,多数情况下末尾不加斜杠更符合直觉,如果后端接口路径与前端不一致,再根据实际路径规则调整。

先用本地curl排除后端端口问题

配置完二级域名访问502,不代表nginx写错,先在服务器本机执行:

curl -I http://127.0.0.1:8080

如果本机都连不上,说明后端服务没起来、端口写错或监听地址不是127.0.0.1,后端如果只监听 localhost,也可能导致外部反向代理无法连接。

nginx多个二级域名配置:单文件和多文件怎么选

当二级域名从两三个增加到十几个,配置文件怎么放就开始影响维护效率。

两种组织方式对比

组织方式 适合场景 优点 缺点
单个conf里写多个server块 域名少、结构简单 集中查看 后期容易臃肿
每个域名一个conf文件 域名多、多人维护 隔离清晰 需要include管理

小型个人服务器,把多个server块放在同一个文件里完全够用,站点数量多起来后,推荐每个二级域名一个配置文件,/etc/nginx/conf.d/blog.conf、/etc/nginx/conf.d/api.conf。

include机制与目录规范

nginx主配置默认会有类似这行:

include /etc/nginx/conf.d/.conf;

你新建的 .conf 文件只要放在该目录,reload后就会自动加载,文件名建议用二级域名前缀命名,便于快速定位。

多域名配置时不要漏掉default_server

nginx配置二级域名怎么设置?nginx配置二级域名教程

如果访问服务器IP时,命中了某个二级域名的站点,通常是因为第一个server块被当成默认站点,可以在主配置里单独写一个默认站点:

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

return 444 会直接关闭连接,避免暴露默认站点内容。

宝塔nginx配置二级域名与命令行方式对比

现在相当一部分个人站长使用宝塔面板管理服务器,宝塔底层也是调用nginx,但操作路径和命令行不一样。

宝塔添加二级域名静态站点路径

  • 登录宝塔面板
  • 进入“网站”
  • 点击“添加站点”
  • 域名填二级域名,如 blog.example.com
  • 选择纯静态或PHP版本
  • 设置网站目录
  • 提交

宝塔会自动生成对应的nginx配置文件,在 /www/server/panel/vhost/nginx/ 下。

宝塔配置反向代理到本地服务

宝塔里同样可以配置二级域名指向不同端口:

  • 进入网站列表
  • 点击二级域名站点后的“设置”
  • 选择“反向代理”
  • 添加反向代理,目标URL填 http://127.0.0.1:8080
  • 保存后宝塔会自动写入 proxy_pass

命令行与宝塔各自的适用场景

如果服务器只跑一两个站点,宝塔可以节省很多时间,如果二级域名多、需要批量管理、或者使用自动化部署工具,直接维护nginx配置文件会更灵活,两者最终都会落到 server_name 和 proxy_pass,没有本质差别。

二级域名和子目录在做站点部署时怎么选

还有些用户会在 example.com/blog 和 blog.example.com 之间犹豫,这影响nginx配置思路,也影响站点长期运营。

二级域名的隔离性更好

二级域名在nginx里是独立server块,可以为每个二级域名单独配置:

  • 独立SSL证书
  • 独立缓存策略
  • 独立访问日志
  • 独立的反向代理后端

适合博客、API、管理后台、文档站等互相独立的业务。

子目录共享主域名权重

子目录形式是同一个server块里的location匹配,共享主域名权重,对于内容相关性高的栏目,子目录通常比二级域名更容易积累主站权重,但配置复杂度和后端应用路由要配合好,否则容易出现前端路由404。

配置完成后验证与常见报错定位

配置只是第一步,上线前还要验证响应是否正常。

curl检查响应头与状态码

在本地或服务器执行:

nginx配置二级域名怎么设置?nginx配置二级域名教程

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

重点看返回的HTTP状态码:

  • 200:正常
  • 301/302:发生跳转,检查是否配置了强制HTTPS或域名跳转
  • 403:目录权限或索引文件问题
  • 502:后端服务不可用

403多半是索引文件或目录权限

如果root目录里没有 index.html 或 index.php,且nginx没有配置 autoindex on,就会返回403,另一个常见原因是网站目录权限不足,nginx运行用户无法读取文件。

502基本是后端端口或服务状态问题

502 Bad Gateway说明nginx作为网关,向后端转发时得不到有效响应,优先检查:

  • 后端服务是否运行
  • 端口号是否一致
  • 后端是否监听在127.0.0.1而非公网IP
  • 防火墙是否拦截本地端口

简米云服务器上nginx配置二级域名的平台差异

在简米云ECS上配置二级域名,除了nginx本身,还要处理平台层的安全组规则,曾有相当比例的用户配置全部正确,但访问一直超时,最后发现是安全组没有放行80端口,国内服务器上,域名未备案也会导致访问被拦截,这属于前置条件,不是nginx配置问题。

小结

nginx配置二级域名的核心,就是在server块里写好 server_name,再根据需求选择 root 静态站点或 proxy_pass 反向代理,配置完成后用 nginx -t 做语法检查,再用 nginx -s reload 平滑生效,遇到访问故障时,从域名解析、安全组、后端服务、nginx日志四个方向逐个排查,效率最高。

nginx配置二级域名常见问题

nginx配置二级域名后访问显示默认站点怎么办?

这种情况通常因为请求没有匹配到新添加的server_name,检查三点:域名解析是否已生效、server_name 是否写错、配置修改后是否执行过 nginx -s reload,如果访问IP显示默认站,可以检查是否缺少 default_server 配置。

nginx二级域名和子目录哪个对GEO更友好?

不能简单说哪个一定更好,二级域名适合内容独立性强的站点,能在nginx层做更细的隔离;子目录共享主域名权重,适合相关性高的栏目,搜索表现取决于内容质量和内部链接结构,配置形式并不是决定性因素。

简米云服务器上nginx配置二级域名需要备案吗?

使用国内服务器提供网站访问,二级域名与主域名一样需要完成ICP备案,未备案域名指向国内服务器时,访问请求通常会被服务商拦截,无法到达nginx层,如果使用境外服务器,则不受国内备案要求限制。

相关文章

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

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