我通过执行 SSL 终止并将解密流量发送到端口 81 上我的服务器的负载均衡器获取我的 SSL 请求。
我正在运行 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 没有检测到 header request.headers['X-Forwarded-Proto'],因此它将请求视为非 https。 我应该添加什么才能让 Rails 认为这是一个 SSL 请求?
最佳答案
所以proxy_set_header没有被passenger使用,需要用passenger_set_cgi_param代替:
passenger_set_cgi_param HTTP_X_FORWARDED_PROTO https;
关于ruby-on-rails - 如何使用 Rails 应用程序在 Nginx 上配置 SSL 终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16441262/