【问题标题】:Redirect nginx internally to https将 nginx 内部重定向到 https
【发布时间】:2019-01-23 00:32:40
【问题描述】:

不确定该场景是否可行,但这是我们想要实现的目标。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 也许我不清楚,ELB 在端口 443 上侦听,但在内部将其定向到 80,问题是当反向代理发生时它发生在 http
    • @JamZ 您使用的是什么类型的 ELB,Classic 还是 Application?
    • 经典 ELB,也是我认为目前不会改变的传统
    • @JamZ 那么为什么不将其后端侦听器从 HTTP 更改为 HTTPS。 HTTPS -> ELB -> HTTPS 当然是支持的。
    • 不确定此更改是否会产生其他影响,我只需要特定位置的代理传递即可重定向到https,您知道它为什么使用http吗?如您所见,我正在重定向到 https
    猜你喜欢
    • 2020-09-11
    • 2016-03-10
    • 1970-01-01
    • 2011-03-29
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2018-04-22
    相关资源
    最近更新 更多