nginx 配置中的 server listen 端口覆盖的问题

我看一个 nginx 配置

nginx.conf 配置文件中的内容

 include loadbalancing.conf;
 server {
   listen       9522;
   server_name  localhost;

loadbalancing.conf 文件中的内容

 server
 {
   listen       9523;
   server_name  biz.abc.com;
   proxy_ignore_client_abort on;
   error_page   500 502 503 504  /50x.html;

两个文件都有 listen 一个 9522,一个是 9523 这是啥意思? 哪个覆盖哪个?还是说两者都起作用?

阅读 4.7k
2 个回答

这个叫基于域名的虚拟主机(name based virtual host),配置的方法就是多个虚拟主机绑定同一个端口,通过server_name区分。其他web server都支持类似的配置方法。

基于的理论基础就是http协议中会带一个HOST头,web server通过这个头判断具体交给哪个虚拟主机响应。如果没有一个匹配,那么通常哪个在前哪个优先响应,这个叫默认虚拟主机,apache有个_default_属性可以强行指定某一个虚拟主机为默认虚拟主机。

两个都起作用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题