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

标签 ruby-on-rails ssl nginx passenger

我通过执行 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/

相关文章:

ruby-on-rails - Array.delete(object) 从数据库中删除?

jquery - bootstrap-datepicker-rails - 选择日期将不会保留

wcf - 使用 TransportWithMessageCredential 时,受信任的人商店是否需要客户端证书

clojure - 为从 nginx 反向代理转发的请求添加唯一 id

javascript - 如何在 Rails Turbolink 中正确使用 jQuery $().load(url)?

ruby-on-rails - 为什么我的 Heroku 应用程序不使用 Sendgrid 发送电子邮件?

c# - SSL相互认证错误及问题

docker - 如何解决 Secret tls-cert.default 未知问题?

php - 我应该运行多少个Docker容器

android - 来自本地服务器/主机的 Android 中的 SSL 证书无效