2013-07-31 41 views
3

我尝试设置nginx,以便它将请求代理到多个位置。例如。 /location1/location2都应代表http://localhost:8080。我无法弄清楚如何在不使用多个位置块的情况下进行配置。我已经尝试过了:带有多个位置的nginx proxypass

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

哪个只给404s。我也试过:

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

这会引发一个错误,即正则表达式不允许使用代理传递。

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

+0

对于缺少';'不是问题吗? –

+0

这是一个很好的问题。 – Aley

+0

你可以试试这个配置'location〜^/location [12] $ {return 200“$ uri”;}'。 – xiaochen

回答

0

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

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

+0

有没有办法做到这一点,而不涉及正则表达式?这看起来像是一组嵌套指令应该匹配的位置的一个简单情况 - 几乎没有一个使用正则表达式匹配的大型枪的用例,这总是在这里不必要的开销。我的意思是,这种模式几乎是一个退化的案例。 – amn