我很难找到nginx proxy_pass故障转移设置的解决方案。
我需要将某些位置代理到后端服务器网址 -
location /Data {
proxy_pass https://backend1.example.com/site1-url;
proxy_set_header X_HOST $host;
}
location /Photos {
proxy_pass https://backend1.example.com/site2-url;
proxy_set_header X_HOST $host;
}
它按预期工作,但我需要nginx故障转移到另一台服务器。所以显而易见的是使用上游:
upstream servers {
server backend1.example.com;
server backend2.example.com backup;
{
location /Data {
proxy_pass https://servers/site1-url;
proxy_set_header X_HOST $host;
}
location /Photos {
proxy_pass https://servers/site2-url;
proxy_set_header X_HOST $host;
}
...,但这不起作用。 Nginx并不了解proxy_pass包含上游。
有优雅的方法吗?
答案 0 :(得分:0)
使用proxy_pass https://servers
并使用重写转到site1-url和site2-url:
location /Data {
rewrite ^ /site1-url/$request_uri? break;
proxy_pass https://servers;
proxy_set_header X_HOST $host;
}
location /Photos {
rewrite ^ /site2-url/$request_uri? break;
proxy_pass https://servers;
proxy_set_header X_HOST $host;
}
警告:我没有测试过此配置。