在我的本地 apache2 服务器中,http 监听端口 80,https 监听端口 443
但是在appfog上,
http 和 https 都在监听 80 端口,因为我遇到了
"The webpage has a redirect loop" on google chrome.
有什么帮助吗?
AppFog 将所有的 Apache 服务器放在运行在 nginx 上的负载均衡器之后。在内部,它们都使用端口 80 上的默认 HTTP 进行通信,因为可以讨论在该层使用 SSL 加密所有通信的好处。他们可能仍在以某种方式使用 SSL,但这对我们来说并不重要。您无法查看客户端是否使用 SSL,因为它们连接到负载均衡器而不是您的 Apache 服务器。幸运的是,nginx 为我们发送了一些额外的标头。X-Forwarded-Port
准确地说X-Forwarded-Proto
。我们可以利用这一点并检查其中一个或多个字段并相应地重定向。
RewriteCond %{HTTP:X-Forwarded-Proto} !^https$ [NC]
RewriteRule ^(.*) https://yourdomain.com/$1 [R,L]
这至少为我解决了这个问题。您可能想对 做一些事情X-Forwarded-Port
,但这应该涵盖大多数情况。