如何通过 nginx 代理传递 Apache SSL 流量?

如何通过 nginx 代理传递 Apache SSL 流量?

我想在 Fedora 8 上设置 nginx 0.6.33 作为运行 Apache 的后端的负载平衡器。我毫无问题地将其配置为默认 http 端口 80,但我不知道如何为 SSL (443) 进行配置。我不想在 nginx 框上安装 SSL 证书,我希望它将整个流量传递到已安装证书的 Apache 服务器。

我的配置如下:

http {
  upstream backend{
    server 192.168.0.1;
    server 192.168.0.2;
  }

  upstream secure{
    server 192.168.0.1:443;
    server 192.168.0.2:443;
  }

  server{
    listen 80;
    server_name www.my-server.net;
    location / {
      proxy_pass http://backend;
      proxy_set_header Host $http_host;
      proxy_redirect false;
    }
  }

  server{
    listen 443;
    server_name www.my-server.net;
    location / {
      proxy_pass https://secure;
      proxy_set_header Host $http_host;
      proxy_redirect false;
    }
  }
}

答案1

不要将 nginx 用作负载平衡器;它不是为这种事情设计的。具体来说,就您而言,它不支持透明地将 TCP 连接传递到后端,因此您需要在 nginx 中设置 SSL 证书并将其作为常规 HTTP 传递回 Apache。

您要么需要一个真正的 L3 负载均衡器(如 LVS),要么需要一个 TCP 代理(如 haproxy),这样 SSL 连接就可以直接流到 Apache。

相关内容