繁体   English   中英

NginX中具有相同URI但具有不同proxy_pass的多个域

[英]Multiple domains with same URIs but different proxy_pass in NginX

我有一个nginx实例,它负责处理生产域和预生产域(domain.com和pre.domain.com)。

目前,我对两个域都有单独的“服务器”块。 但是,这些块的内容几乎相同-相同的URI,但代理到不同的后端服务器。 我想拥有更清晰的nginx配置,所以我考虑将域放在相同的“服务器”块中,并基于域创建代理。

不幸的是,下面的示例似乎不起作用:

server_name pre.domain.com domain.com;
location /someuri {
        if ($host = 'pre'domain.com') {
        proxy_pass  http://pre.backend/someuri;
        }
        proxy_pass  http://backend/someuri;
}

不幸的是,由于以下错误,我的想法失败了:

nginx: [emerg] "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block in /etc/nginx/conf.d/default.conf:17

我也尝试过玩“地图”,但结果是一样的。

问题是:是否有可能在一个“服务器”块中处理多个域,并从不同的上游获取“相同” URI的内容?

在此先感谢您的小费。

使用单独的服务器配置,并避免使用“ if”指令。 您可以在包含文件中为所有服务器保持相同的配置。

server {
server_name domain.com;
location /someuri {
   proxy_pass  http://backend/someuri;
}
include domain.com.cfg;
}

server {
server_name pre.domain.com;
location /someuri {
   proxy_pass  http://pre.backend/someuri;
}
include domain.com.cfg;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM