具有多个位置的 nginx proxypass

Posted

技术标签:

【中文标题】具有多个位置的 nginx proxypass【英文标题】:nginx proxypass with multiple locations 【发布时间】:2013-07-31 20:48:06 【问题描述】:

我尝试设置 nginx 以将请求代理到多个位置。例如。 /location1/location2 都应该代理到 http://localhost:8080。我只是不知道如何在不使用多个位置块的情况下配置它。我已经试过了:

location /(location1|location2) 
    proxy_pass http://localhost:8080/

这只会给出 404。我也试过:

location ~ /(location1|location2) 
     proxy_pass http://localhost:8080/

这将引发代理传递不允许使用正则表达式的错误。

是否可以配置此代理而无需创建多个位置块?

【问题讨论】:

是不是缺少';'的问题? 这是个好问题。 你可以试试这个配置location ~ ^/location[12]$ return 200 "$uri"; 【参考方案1】:

显然缺少一个斜杠和一个';'。试试这个:

location ~ (/location1|/location2) proxy_pass http://localhost:8080;

【讨论】:

有什么方法可以在不涉及正则表达式的情况下做到这一点?这看起来像是嵌套指令应该匹配其中任何一个位置的一个微不足道的案例——几乎不是一个使用正则表达式模式匹配的大枪的用例,这在这里总是不必要的开销。我的意思是,这种模式几乎是一种退化的情况。

以上是关于具有多个位置的 nginx proxypass的主要内容,如果未能解决你的问题,请参考以下文章

同一位置块中的多个 if 如何交互?

尝试在具有代理缓存的 nginx 服务器中添加另一个位置指令

nginx请求应该去多个位置

在同一台服务器中配置多个位置的 nginx

一个规则正则表达式的 nginx 多个位置

NGINX基本位置子路径,每个子路径具有不同的TLS证书和密钥