我想使用类似的东西:
location @a1 {
...
}
location @a2 {
...
}
location /path {
try_files @a1 $uri @a2
}
是否可以,我应该在@ a1位置继续尝试使用$ uri / @ a2?
如果是这样,nginx将如何处理?
答案 0 :(得分:5)
我找到了this solution:
location /static/ {
try_files $uri @static_svr1;
}
location @static_svr1{
proxy_pass http://192.168.1.11$uri;
proxy_intercept_errors on;
recursive_error_pages on;
error_page 404 = @static_svr2;
}
location @static_svr2{
proxy_pass http://192.168.1.12$uri;
proxy_intercept_errors on;
recursive_error_pages on;
error_page 404 = @static_svr3;
}
location @static_svr3{
proxy_pass http://192.168.1.13$uri;
}
此示例的工作方式如下:
try_files $uri @static_svr1 @static_svr2 @static_svr3
答案 1 :(得分:1)
你不能,因为try_files只会将其 last 参数视为命名位置 - 在您的示例中,nginx将查找名为@a1
的文件并忽略{{1}阻止。
try_files docs对此没有超级明确,只提到“最后一个参数也可以指向命名位置”。
This answer显示了一种使用error_page的变通方法,这对您来说可能是一种有用的方法(取决于您希望通过加入location @a1
来做什么)。