Nginx配置:主域名与其他域名分属不同Server块的实现
解决Nginx主域名与其他域名分Server块匹配的问题
要实现主域名mymain.com匹配第二个Server块,所有其他域名(包括子域名、CNAME过来的任意域名)匹配第一个Server块,你需要调整Nginx的Server块配置,利用Nginx的server_name匹配优先级规则来实现:
正确配置示例
# 第一个Server块:匹配所有未被第二个块明确匹配的域名(默认规则) server { listen 80 default_server; server_name _; # 通配符,匹配所有未被精确匹配的域名 location / { root /usr/share/nginx/html; # 注意你原配置里的`thml`是拼写错误,需改为`html` index index.html index.htm; try_files $uri $uri/ /index.html; } } # 第二个Server块:仅精确匹配主域名mymain.com server { listen 80; server_name mymain.com; # 精确匹配主域名 location / { root /usr/share/nginx/admin; index index.html index.htm; try_files $uri $uri/ /index.html; } }
关键说明
- 第一个Server块:通过
server_name _和default_server标记,成为所有未被其他Server块精确匹配的请求的默认处理入口,包括mymain.com的子域名(如www.mymain.com)、其他CNAME指向的任意域名。 - 第二个Server块:
server_name mymain.com是精确匹配规则,优先级高于默认Server块,因此所有Host头为mymain.com的请求都会被该块处理。
生效步骤
- 保存修改后的配置文件
- 检查配置语法是否正确:
nginx -t - 重新加载Nginx配置使修改生效:
nginx -s reload
额外说明
如果需要让mymain.com的所有子域名(如www.mymain.com、admin.mymain.com)也匹配第二个Server块,只需将第二个块的server_name改为:
server_name mymain.com *.mymain.com;
内容的提问来源于stack exchange,提问作者Gracie williams
相关产品推荐
相关产品推荐

