问题
使用搜索引擎时发现多域名多端口解析时,出现某域名端口错位访问的情况。
具体表现如下:
1 2 3 4 5 6 7 8 9
| # 端口644是二级域名blog下的端口 server { listen 644; server_name xx-blog.gelu.me; location / { root /usr/share/nginx/blog; index index.html; } }
|
根据上述配置应该只有xx-blog.gelu.me:644才能打开blog页面,然后事实并非如此。其他域名如gelu.me:644也会打开博客页面。
解决
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # 在原server前加入该server即可 server { listen 644; server_name _; # 下划线可换成其他合法字符串 return 404; # 返回你想返回的 }
server { listen 644; server_name xx-blog.gelu.me; location / { root /usr/share/nginx/blog; index index.html; } }
|
原因是nginx会先根据listen来确定server,只有当多个listen同时满足时,才会进一步检查server_name.当配置中一个listen只对应一个server时,server_name等于没写。