【问题标题】:AWS Elasticbeanstalk Single Instance Force SSLAWS Elasticbeanstalk 单实例强制 SSL
【发布时间】:2013-12-20 04:00:10
【问题描述】:

我正在为我的应用程序使用 aws elasticbeanstalk 单实例。我尝试了所有解决方案来强制使用 ssl。我的意思是即使用户转到http://myapp.com 我希望它重定向https://myapp.com。我尝试了所有 mod_rewrite .htaccess 解决方案,还尝试通过在我的 codeigniter 控制器中使用 php 重定向功能进行重定向,但它们没有工作。

这是我的 .htaccess 配置:

#Force SSL
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule !/status https://%{SERVER_NAME}%{REQUEST_URI} [L,R]


RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

【问题讨论】:

    标签: php .htaccess codeigniter ssl amazon-web-services


    【解决方案1】:

    如果您遵循 AWS 文档,则来自端口 443 的每个调用都会被代理到端口 80。排除 localhost,它应该可以工作:

    RewriteCond %{SERVER_PORT} !=443
    RewriteCond %{SERVER_ADDR}   !^127\.0\.0\.1
    RewriteRule (.*) https://%{SERVER_NAME}/$1 [L]
    

    【讨论】:

    • 这对我有用。我已将我的 PHP 应用程序作为单个实例部署到 Elastic Beanstalk。我还使用了此文件中的说明 - docs.aws.amazon.com/elasticbeanstalk/latest/dg/…。所以上面的答案和链接中的说明通过 htaccess 强制向我的应用程序发送一个 HTTP 请求到 HTTPS。
    【解决方案2】:

    尝试替换:

    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    

    RewriteCond %{HTTPS} off
    

    【讨论】:

    • 它给出了同样的问题。重定向循环检测到错误。我认为这是基于 aws elasticbeanstalk 的问题,但我不知道在哪里。
    【解决方案3】:

    强制 HTTPS 规则:

    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule !status https://%{HTTP_HOST}%{REQUEST_URI} [L,R]
    

    【讨论】:

    • 不,“https://”和“http://”现在都无法访问。通常,它可以工作,但在添加这些重定向规则后,它就会被破坏。
    • 那么这可能是超出我们在问题中看到的原因。因为我建议的规则只影响http:// 流量。
    • 那么,在这种情况下我该怎么办。
    • 这里已经很晚了。我睡觉前的最后一条评论,在 Firebug 中运行你的请求,看看你在 Net 选项卡中得到了什么。也尝试使用新的浏览器。如果没有任何效果,则启用RewriteLog 并查看其报告。
    • 你有没有更多的调试信息?
    猜你喜欢
    • 2013-12-20
    • 2023-03-18
    • 2017-06-14
    • 2016-04-16
    • 2014-12-19
    • 2017-08-03
    • 2017-10-15
    • 2016-01-01
    • 2017-07-13
    相关资源
    最近更新 更多