Nginx proxy_pass故障转移到多个上游服务器

时间:2014-08-20 07:36:17

标签: nginx failover proxypass

我很难找到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包含上游。

有优雅的方法吗?

1 个答案:

答案 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;
}

警告:我没有测试过此配置。