Ruby on rails 代理的Rails应用程序相对\u url\u根不作为url帮助程序的前缀

Ruby on rails 代理的Rails应用程序相对\u url\u根不作为url帮助程序的前缀,ruby-on-rails,reverse-proxy,Ruby On Rails,Reverse Proxy,因此,我让Nginx代理一个rails应用程序,配置如下 location ^~ /admin { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://admin/; } 具有将所有请求重新写入=> 所以接下来我遇到了资产url不指向代理应用程序的

因此,我让Nginx代理一个rails应用程序,配置如下

location ^~ /admin {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://admin/;
}
具有将所有请求重新写入=>

所以接下来我遇到了资产url不指向代理应用程序的问题,所以
config.relative\u url\u root='/admin'
就做到了

下一个问题是link\u to生成的每个链接都返回一个基于
/
而不是
/admin
的链接,我相信
配置。相对url\u root
会更改。。。现在我有点正确了,如果我进入
rails控制台
,然后
包括rails.application.routes.url\u helpers
,然后调用say
root\u path
management\u path
,我会收到
/admin
/admin/management
。太好了

这就是我感到困惑的地方。“我的视图”中生成的所有路由都忽略了由
config.relative\u url\u root
设置的前缀。。。 为什么此配置选项在控制台环境中工作,而在视图环境中不工作

config.relative\u url\u根目录位于my application.rb中


Rails 5.1.5

这个解决方案并不是我所希望的,但在这期间它起了作用

/config.ru

map ENV['RAILS_RELATIVE_URL_ROOT'] || "/" do
  run Rails.application
end
/nginx.conf

location ^~ /admin {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://HC_admin/admin;
}
所有的改变是,应用程序本身现在认为它正在运行于
/admin
或您设置的
RAILS\u RELATIVE\u URL\u ROOT
上。在我看来,这违背了将应用程序的各个部分分离的目的,因为您仍然需要配置其安装位置

在要点中找到一些说明