Nginx。服务器指令继承。


9

有什么办法可以减少结构,例如:

server { 
  server_name regular_site; 
  location /api/ { 
     proxy_pass 127.0.0.1:5000;
  } 
  location / { 
     proxy_pass 127.0.0.1:3000;
  } 
} 

server { 
  server_name mobile_site; 
  location /api/ { 
     proxy_pass 127.0.0.1:5000;
  } 
  location / { 
     proxy_pass 127.0.0.1:3001;
  } 
} 

server api { 
  location /api/ { 
     proxy_pass 127.0.0.1:5000;
  } 
}

server extends api { 
  server_name regular_site;
  location / { 
     proxy_pass 127.0.0.1:3000;
  } 
} 

server extends api { 
  server_name mobile_site;
  location / { 
     proxy_pass 127.0.0.1:3001;
  } 
} 

欢迎摆脱api部分的任何其他建议。


请花一点时间阅读我们的常见问题解答。 对于我来说,您的问题对本网站而言似乎是题外话。
HopelessN00b 2012年

@ HopelessN00b,是的,看起来像是题外话。但是这里我们有3000个关于nginx的问题,在这种情况下很奇怪。我敢肯定,这个问题不是针对stackoverflow的。
Nikolay Fominyh,2012年

Answers:


13

您只需include声明即可轻松完成。

/etc/nginx/conf/api_defaults.conf

location /api/ { 
  proxy_pass 127.0.0.1:5000;
}    

然后在您的主vhost配置中。

/etc/nginx/sites-enabled/my_new_api.conf

server my_new_api {  
  server_name mobile_site;

  include "/etc/nginx/conf/api_defaults.conf";

  location / { 
    proxy_pass 127.0.0.1:3001;
  }         
}

这也是我的想法,换句话说,位置块不会继承到服务器块。这与Apache的做法不同,在Apache中,您可以在虚拟主机之外定义位置,该位置由所有虚拟主机继承。使用Nginx,您必须在每个服务器块中显式包括公共配置。
JM Becker 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.