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服务。

反向代理到本地端口的标准写法
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/userproxy_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

如果访问服务器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检查响应头与状态码
在本地或服务器执行:

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层,如果使用境外服务器,则不受国内备案要求限制。
