【问题标题】:Loading page without https加载页面没有 https
【发布时间】:2017-09-27 06:47:32
【问题描述】:

我在 AWS 上使用 Route53 设置我的站点,负载均衡器使用 https。

我的负载均衡器只为 https 打开。

如果没有 https,我无法加载我的页面。

我看到带有 https 的链接,例如 www.google.com,即使它们有 https 我也不需要在浏览器中键入 https。

只需在浏览器中键入 www.google.com 并加载 https://www.google.com。

但是对我来说 www.domainname.com 是键入的,但 https://www.domainname.com 没有加载。

我该如何设置?是 AWS 设置的问题吗?

【问题讨论】:

  • 不,谷歌只是将你从它的 http 站点重定向到它的 https 站点。
  • @pvg 但就我而言,如何从 http 重定向到 https 站点。我该如何设置?
  • 这是从 http 重定向到 https。我在这里看到一些讨论。 stackoverflow.com/questions/24603620/…

标签: amazon-web-services amazon-elb amazon-route53


【解决方案1】:

@Sergey Kovalev 的回答是正确的。我需要在 elb 上同时打开 http 和 https。然后在你的页面所在的文件夹设置重定向,即 index.php 所在的文件夹。

设置方法是这样的, 在文件 .htaccess 中,放入以下 ​​X-Forwarded-Proto 代码

<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
</VirtualHost>

然后把代码放到index.php所在的文件夹里面。

然后就可以了。

【讨论】:

    【解决方案2】:

    如果您的负载均衡器仅针对 HTTPS 打开,则不会在端口 80 上侦听 HTTP 请求。您应该同时允许 HTTP 和 HTTPS,并将您的 Web 服务器配置为始终从 HTTP 重定向到 HTTPS。这就是 Google 所做的。

    【讨论】:

    • "Google 就是这样做的。" Google 在 ELB 上运行?我在开玩笑。这个答案很到位。为了让那些不太熟悉 ELB 的人受益,我们可能会提到请求中是否存在 X-Forwarded-Proto: http 标头或不存在 X-Forwarded-Proto: https 是 Web 服务器本身或运行在那里的应用程序确定哪个协议用于连接到 ELB,并返回重定向。 header是ELB添加的,浏览器不能伪造。
    • 根据这里的讨论(forums.aws.amazon.com/thread.jspa?messageID=745509),我需要在 RewriteCond %{HTTP:X-Forwarded-Proto} 上重定向 RewriteEngine !https RewriteRule .* https://%{HTTP_HOST} .htaccess 中的 %{REQUEST_URI} [R=301,L]。这意味着我在网页的根文件夹中创建 .htaccess 文件并将该代码复制到文件中?
    猜你喜欢
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 2015-05-03
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多