0

我有一个使用 Nginx 作为网络服务器的 Rails 应用程序(3.2.x)https://myapp.com(虚构名称),一个运行整个软件堆栈的服务器。注意 https,我安装了有效的 SSL 证书。

随着流量的增加,我想在应用程序前面添加一个负载均衡器,所以想法是:

1 个负载均衡器(使用 Nginx)
4 个应用服务器(运行 RubOnRails / Nginx)
1 个数据库服务器

服务器名称为

lb.myapp.com
app1.myapp.com、app2.myapp.com、app3.myapp.com、app4.myapp.com
db.myapp.com

我想将 SSL 处理保持在应用服务器级别(因为我不一定信任负载均衡器和应用服务器之间的网络流量)。

  1. 将服务器名称 app1.myapp.com (分别)放入每个应用服务器的 server_name 配置参数中,并将 lb.myapp.com 放入负载均衡器的 server_config 参数中是否正确?

  2. 我是否认为我不必设置负载均衡器中设置的 ssl_on、ssl_certificate 和 ssl_certificate_key 配置参数但仅在应用服务器(应该处理 SSL 部分)上设置是否正确?我只会添加

    proxy_set_header X-FORWARDED-PROTO https;
    proxy_redirect off;
    

    到负载均衡器?

  3. 我需要什么 SSL 证书,只是 myapp.com 一个证书,还是我需要为不同的应用服务器提供不同的证书?

4

1 回答 1

0
  1. 仅当您的应用服务器根据 HOST 值为多个站点提供服务时才重要。
  2. 错误的假设。您建议的设置意味着 SSL 终止是在 nginx 负载平衡器上完成的。这意味着您的 myapp.com SSL 证书应该在负载均衡器上配置。
  3. 您指出您不信任负载均衡器和应用服务器之间的连接。你可以在不同的层面上解决这个问题。一些解决方案是(假设负载均衡器终止 SSL):
    • https 到应用服务器(您自己的建议),为此您需要 myapp.com +(自签名)应用服务器 SSL 证书。
    • VPN beteen 负载均衡器和应用服务器

另一种方法是在应用服务器上进行 SSL 终止。这可以通过例如 HAProxy ( http://haproxy.1wt.eu/ ) 来实现。这种方法有一些注意事项,例如:到您的应用服务器的所有连接都将以负载均衡器为源。

于 2013-04-07T07:43:19.070 回答