Ruby on rails 代理的Rails应用程序相对\u url\u根不作为url帮助程序的前缀
因此,我让Nginx代理一个rails应用程序,配置如下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不指向代理应用程序的
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
,然后调用sayroot\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
上。在我看来,这违背了将应用程序的各个部分分离的目的,因为您仍然需要配置其安装位置
在要点中找到一些说明