nginx:有多个服务器指令的上游?

我试图打包使用nginx作为代理的2个应用程序,并将每个configuration文件传递到/etc/nginx/conf.d/

在一个文件( combined.conf )中做这个很好:

  upstream backend1 { http://localhost:8989; } upstream backend2 { http://localhost:8990; } server { location /backend1/ { proxy_pass http://backend1; } location /backend2/ { proxy_pass http://backend2; } 

但是,当分成两个文件时,其中一个redirect系统失败:

所以我的问题是:一个http节点可以有2个不同的server孩子?

Nginx的文档没有提到这一点。

其他人似乎已经成功的这种架构虽然:(

Nginx的版本是1.1.19-1ubuntu0.1。

感谢您的任何build议!

经过这么隆隆的testing之后,我想出了一个让它工作的方法,并且能够为每个应用程序提供一个configuration文件。

在这里,它被分派在一个通用文件和一对上行/位置文件中,每个应用程序:

  • /etc/nginx/conf.d/common-proxies.conf

     include /upstreams/*.conf; server { include /locations/*.conf } 
  • /etc/nginx/locations/backend1.conf

     location /backend1/ { upstream http://backend1; } 
  • /etc/nginx/locations/backend2.conf

     location /backend2/ { upstream http://backend2; } 
  • /etc/nginx/upstreams/backend1.conf

     upstream backend1 { http://localhost:8989; } 
  • /etc/nginx/upstreams/backend2.conf

     upstream backend2 { http://localhost:8990; } 

一个http块可以有许多服务器子项。 但是,nginxselect一个服务器块来处理请求。 所以,请求永远不会“看到”后端2的位置,因为它与第一个服务器块相匹配。