AWS Elasticbeanstalk单实例强制SSL重定向循环

 米蘭王妃级_608 发布于 2023-02-13 09:17

我强迫ssl遇到问题.我正在使用codeigniter并使用elasticbeanstalk在AWS单实例中部署它.我的htaccess规则如下:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule !/status https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

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

但浏览器进入重定向循环.无论我尝试什么都没有解决这个问题.

1 个回答
  • 正如我在评论中提到的那样:

    在ssl.conf中,来自端口443的每个调用都被"代理"到端口80,所以你永远不会得到https = on.

    我做了一些测试,我发现ssl.conf中的ProxyPass指令不是简单地将每个请求从端口443重定向到localhost:80,而是基本上从头开始通过端口80向Apache重复请求(至少,这是什么我明白了).

    我检查了$ _SERVER的值,发现在HTTPS请求期间设置了HTTP_X_FORWARDED_FOR,HTTP_X_FORWARDED_HOSTHTTP_X_FORWARDED_SERVER(但是在HTTP请求期间没有设置它们),同时在HTTPS请求期间SERVER_ADDRREMOTE_ADDR设置为127.0.0.1(但是它们被设置为HTTP请求的不同值).

    我假设你可以很容易地检查你的请求是否是普通的HTTP这样的东西(检查语法,我对Apache很垃圾):

    RewriteCond %{ENV:HTTP_X_FORWARDED_SERVER}   !^$
    

    要么

    RewriteCond %{ENV:SERVER_ADDR}   !^127\.0\.0\.1
    

    请注意:我在AWS文档中找不到任何引用,这只是一个经验结果......他们可以轻松地改变这种行为!

    快乐的编码!:)

    2023-02-13 09:20 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有