ruby-on-rails - 使用 Devise 在 Rails 中更改主机名以进行重定向

标签 ruby-on-rails ruby redirect devise hostname

我需要为我的 Rails 应用程序进行一些特殊设置。我的应用程序托管在反向代理后面,出于某种原因它正在重写请求。应用程序运行的服务器只有一个内部 IP 地址。反向代理具有公共(public)地址并将所有传入请求重定向到应用服务器。

问题是,虽然所有请求都是 example.com/my/url它们正在被重写并作为 10.0.0.2/my/url 发送到应用服务器.这成为一个问题,例如。设计通过要求身份验证和重定向到登录页面来发挥作用。发送的重定向将包括本地 IP 地址,而不是最初请求的 FQDN。

知道如何告诉我的 Rails 应用程序在重定向中使用特定的主机名吗?我试过设置 HTTP_HOST使用 passenger_set_cgi_param这没有用,还尝试手动设置 request.hostbefore_filter .

最佳答案

我认为您需要让反向代理将关键的 HTTP header 转发到您的 Rails 应用程序。听起来这些都被剥离了。

对于 nginx,我的 server block 中有这些指令:

server {
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header Host $http_host;
  proxy_redirect off;
  passenger_set_cgi_param HTTP_X_FORWARDED_PROTO https;
}

关于ruby-on-rails - 使用 Devise 在 Rails 中更改主机名以进行重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8869268/

相关文章:

ruby-on-rails - 是否可以在 Ruby on Rails 中使用 RJS 更新数据库记录?

ruby-on-rails - 有什么方法可以在 Rails 控制台中测试 HAML 输出吗?

Rails 中的 HTML,对齐来自不同文件的链接和后退按钮

ruby - 从0开始注入(inject)和sum一样吗

ruby-on-rails - 如何在 Rails 3 中为哈希中的变量应用 attr_accessor

ruby-on-rails - 美德 : distinguish empty arrays from an unset attribute

ruby-on-rails - 如何在 Rails 应用程序中对博客文章进行分页

.htaccess - 使用 mod_rewrite 进行语言重定向

apache - 将 www 重定向到非 www,同时保持协议(protocol) HTTP 或 HTTPS

ruby-on-rails - rails redirect_to :back not working