【问题标题】:Nginx proxy_pass failover to multiple upstream serversNginx proxy_pass 故障转移到多个上游服务器
【发布时间】:2014-08-20 07:36:16
【问题描述】:

我很难找到 nginx proxy_pass 故障转移设置的解决方案。

我需要将某些位置代理到后端服务器的 URL -

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 包含上游。

有没有优雅的方法来做到这一点?

【问题讨论】:

  • 尝试在服务器声明中添加端口号:server backend1.example.com:443。默认为 80。此外,upstream 必须在 server 块之外
  • 您认为故障转移是什么?查看 proxy_next_upstream 的详细信息,了解我的意思。

标签: nginx failover proxypass


【解决方案1】:

使用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;
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 2015-05-09
    • 1970-01-01
    相关资源
    最近更新 更多