在内部将Nginx重定向到https

时间:2019-01-22 16:17:08

标签: amazon-web-services nginx load-balancing reverse-proxy amazon-elb

不确定这种情况是否可行,但这是我们想要实现的。

客户端-> 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;

1 个答案:

答案 0 :(得分:0)

如果您要问如何将ELB和Nginx之间的流量转换为HTTPS(如果ELB的前端侦听器是HTTP),那么答案是-您不能。因为从安全角度来看,拥有此功能没有任何意义。您正在通过不安全的Internet发送未加密的流量,然后在您要对其进行加密的路径的末尾(这很重要,该流量已经受到威胁-或至少您需要假设是)。

如果您真的不能更改前端ELB侦听器,并且由于某种原因(很可能不是一个好的理由),您需要在Nginx上接收HTTPS流量,那么您唯一的选择是在ELB和Nginx之间放置另一个服务器会将传入的HTTP流量转换为HTTPS并将其传递给Nginx。但是老实说,这是一个糟糕的解决方案。您可能应该更改系统的其他部分,而不要这样做。