不确定这种情况是否可行,但这是我们想要实现的。
客户端-> PORT 80 AWS ELB(无法更改)-> nginx->反向代理-> apache
请求/ blog时,其代理已传递到https://1.2.3.4
但是,反向代理发生后,URL是http而不是https。
基于上述架构,我们如何在不更改ELB设置的情况下强制其使用https。 (内部转到https nginx设置)
我的反向代理的nginx配置是-
proxy_pass https://1.2.3.4/;
#proxy_pass https://www.example.com/blog;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_request_headers on;
proxy_set_header Host $host;
proxy_set_header 'Access-Control-Allow-Methods' 'GET, POST,
OPTIONS';
proxy_ssl_session_reuse off;
答案 0 :(得分:0)
如果您要问如何将ELB和Nginx之间的流量转换为HTTPS(如果ELB的前端侦听器是HTTP),那么答案是-您不能。因为从安全角度来看,拥有此功能没有任何意义。您正在通过不安全的Internet发送未加密的流量,然后在您要对其进行加密的路径的末尾(这很重要,该流量已经受到威胁-或至少您需要假设是)。
如果您真的不能更改前端ELB侦听器,并且由于某种原因(很可能不是一个好的理由),您需要在Nginx上接收HTTPS流量,那么您唯一的选择是在ELB和Nginx之间放置另一个服务器会将传入的HTTP流量转换为HTTPS并将其传递给Nginx。但是老实说,这是一个糟糕的解决方案。您可能应该更改系统的其他部分,而不要这样做。