如何使用Rails应用程序在Nginx上配置SSL终止

时间:2013-05-08 12:53:26

标签: ruby-on-rails ssl nginx passenger

我通过负载均衡器获取SSL请求,该负载均衡器执行SSL终止并将解密的流量通过端口81发送到我的服务器。

我正在运行Nginx并设置了一个端口81的监听器,我想告诉我的Rails应用程序这是一个SSL请求。

以下是我的Nginx配置的样子:

  server {
    listen 81;

    server_name SERVER;

    root /var/www/app/current/public;
    error_log /var/log/nginx/app-error.log;
    access_log /var/log/nginx/app-access.log;

    passenger_enabled on;

    client_max_body_size 100M;

      location / {

        passenger_enabled on;

        proxy_set_header X-FORWARDED-PROTO https;

      }

  }

它经历了但Ruby on Rails没有检测到头request.headers ['X-Forwarded-Proto'],所以它将请求作为非https。 为了让Rails认为这是一个SSL请求,我应该添加什么?

2 个答案:

答案 0 :(得分:4)

因此乘客不使用proxy_set_header,您需要使用passenger_set_cgi_param:

passenger_set_cgi_param HTTP_X_FORWARDED_PROTO https;

答案 1 :(得分:-1)

nginx指令passenger_set_cgi_param已被passenger_set_env取代。  https://www.phusionpassenger.com/documentation/Users%20guide%20Nginx.html#PassengerEnvVar

对于较新的nginx,指令应为

passenger_set_cgi_param HTTP_X_FORWARDED_PROTO https;