相关疑难解决方法(0)

X-Forwarded-Proto for Rails落后于ELB背后的nginx

我几十个小时都坚持这件事.我无法让它发挥作用.我尝试了一切我能想到和/或在网上找到的东西.

所以,我的应用程序指向ELB(web).ELB侦听80和443并将流量发送到80(此处SSL终止)到成员实例(即nginx).

Nginx代理应用程序请求在多个实例前面的另一个ELB(app).这些实例运行puma.

一切正常,除非我尝试使用方案访问URL(我用于force_ssl该控制器)https,我得到一个重定向循环.

这是我的nginx配置看起来像

  location @{{app_name}} {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
    proxy_pass http://{{app_name}};
    # limit_req zone=one;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
  }
Run Code Online (Sandbox Code Playgroud)

(显然app_name被ansible取代.)

而不是$scheme,我尝试了硬编码https,$proxy_add_x_forwarded_proto但没有一个对我有效.我仍然得到循环.

然后我开始检查envrails中的内容,无论我在nginx配置中设置哪个头,我都会看到以下值.

"SERVER_PROTOCOL"=>"HTTP/1.1",
"HTTP_X_FORWARDED_PROTO"=>"http",
"rack.url_scheme"=>"http",
Run Code Online (Sandbox Code Playgroud)

我不确定我做错了什么.任何帮助赞赏!注意:我已经检查了所有找到的SO线程,没有人帮忙!

ruby-on-rails nginx amazon-elb

9
推荐指数
1
解决办法
5185
查看次数

标签 统计

amazon-elb ×1

nginx ×1

ruby-on-rails ×1