所以这里是设置。 我有一个Rails 3应用程序部署到两个服务器,都运行Apache2,都具有相同的VirtualHostconfiguration,都在Passenger上运行。 Rails应用程序中有几条路由需要在SSL上完成请求,所以我已经按照需要使用:protocol => 'https定义了这些路由。
这两台服务器是BigIP负载平衡器上负载均衡池的一部分,一个configuration文件设置为处理端口80stream量,另一个负责处理端口443stream量。 我们已经购买了一个authentication,我们已经将其加载到BigIP框中,并为分配给:443configuration文件的authentication设置了configuration文件。
我的Apacheconfiguration在每个服务器上相同地定义了ServerName , DocumentRoot , SetEnv (用于我的Rails环境)以及在<VirtualHost *:80 *:443>声明中的所有jazz(注意,在用这些文件去除*:443一点点变化绝对没有)。 那里没有什么特别的。
当浏览到80端口的这个网站,stream量通过就好,它击中了Rails应用程序。 当浏览到需要HTTPS的login页面时,浏览器就会坐在那里尝试联系页面。 最终我的浏览器给我一个服务器意外地丢失了连接错误。
我的问题是:BigIP如何将SSLstream量发送到其池中的服务器,以及Apache如何识别? 我甚至没有得到我的Apache日志中的条目,即使stream量达到两个后端服务器。 有什么我需要修改一个Passengerconfiguration的地方,以允许这种stream量?
如果有更多信息需要比我已经发布,让我知道,我会附加到这个问题。 看起来我比我想象的更加绿色。
也; 因为我觉得这个东西真的有点愚蠢,有什么好的资源可以帮助我了解Web服务器如何处理SSL请求?
如果您已经在F5 LTM上加载了证书并将其与侦听端口443的虚拟服务器相关联,则F5终止SSL并将HTTPstream量传递到池。 Apache不会看到SSLstream量,只是https的“http”部分。 您可以使用与端口80stream量相同的池。
这听起来像是你的证书没有在F5中正确加载,或者sslconfiguration文件没有与你的443虚拟服务器相关联。
我的答案类似于ERR0的…
如果你有私有的VLAN,那么你的HTTP服务器真的不需要在443上进行监听。相反,你的应用应该是反向代理感知的,并将某些页面redirect,例如/login到页面的SSL / HTTPS版本。
阅读X-Forwarded-For和X-Forwarded-Proto HTTP头。
我不熟悉Rails,但也许有一个模块为你做这个? 即允许您指定哪些页面应redirect到SSL / HTTPS版本。
干杯