强制使用AWSredirectSSL在ELB上解密SSL并路由到Nginx / Passenger

目前我们正在创造一个新的环境,并且遇到一些与SSL有关的怪癖。 我们正在使用接受80/443的ELB。 两个路由到Nginx盒子上的同一个端口(ELB Decrypts)。 在Nginx框中,我们正在检查AWS头,如果我们没有看到它,我们会redirect到https。 到目前为止,虽然redirect不起作用。

以下是在端口3000(ELB 80-> 3000,ELB 443-> 3000)上监听的站点的nginxconfiguration文件的副本。

server { listen 80; root /home/app/web-app/public; passenger_enabled on; passenger_user app; # If this is a Ruby app, specify a Ruby version: passenger_ruby /usr/bin/ruby2.2; passenger_min_instances 2; if ($http_x_forwarded_proto != "https") { return 301 https://$host$request_uri; } } 

任何想法,我在做什么错在这里?

编辑 –

我们正在使用这里看到的客运docker图像 – https://github.com/phusion/passenger-docker

乘客启动,似乎采取端口3000的所有请求,尽pipeNginxconfiguration显示听80。

@TJSonders让我走上了正轨。 我正在绕过Nginx的bundle exec单独运行。 一旦我意识到这个错误,并将我的docker文件转移到启动Nginx,它开始击中configuration文件。

您可能需要告诉乘客通过这些标题, 例如

 passenger_pass_header X-Forwarded-For; passenger_pass_header X-Forwarded-Proto; 

passenger_pass_header文档提到某些头文件不被传递,并且这个指令是必需的。

希望这可以帮助!