我有一个非常标准的rails 5.1 app,它安装在我们主域下的一个子目录下:
https://www.company.com/subir/
这是在routes.rb
中完成的scope :subdir
the other routes
end
我在DMZ中使用NGINX将传入的请求传递给我的应用服务器:
...
server_name www.company.com;
location /subdir {
proxy_pass https://my-app-server;
}
...
我的app-server上的安装了非常常见的组合Nginx / Puma,几乎一切正常,除了我通过动作邮件发送的电子邮件中的网址。
在我看来,我有一个链接:
link_to 'approve customer', admin_customer_url(@customer)
这会创建以下内容:
https://www.company.com/**subdir/subdir**/admin/customer/:id
在我的本地计算机上,这些链接在我的电子邮件中正确生成,但不在我的应用服务器上的暂存环境中生成。
我将请求对象转储到视图中以查看我的nginx设置是否疯狂,但没有任何明显的疯狂......
有什么想法吗?
答案 0 :(得分:0)
检查您的环境文件中是否设置了config.action_mailer.default_url_options。 http://api.rubyonrails.org/classes/ActionMailer/Base.html
答案 1 :(得分:0)
对于记录:在deploy / staging.rb中,我仍然导出ENV [' RAILS_RELATIVE_URL_ROOT']。这将子目录添加到app.base_path两次,这导致了我的问题。