我们已经使用Nginx和puma为我们的rails应用程序设置了一个生产服务器。我们想在子uri和主域上部署我们的rails应用程序,我们希望将wordpress用于主页,定价页面等。
我们如何配置能够在具有Devise gem作为身份验证的子uri上运行的rails。我们是否需要更改子uri的路线?
nginx和puma的配置是什么?
提前致谢!
答案 0 :(得分:2)
不,你根本不应该配置rails app。 实际上你可以改变你的nginx配置。
它应该代理对您的wordpress应用程序的根域请求,以及对您的rails应用程序的子域请求。
查看此问题,获取nginx How configure nginx for rails app as subdomain?
的配置答案 1 :(得分:2)
首先将您想要的子uri路径放在application.rb
中,即 main
...
config.relative_url_root = "/main"
...
在config.ru
中,添加以下行。
require ::File.expand_path('../config/environment', __FILE__)
map SampleApplication::Application.config.relative_url_root || "/" do
run Rails.application
end
在production.rb
中,添加以下行。
# Enable serving of images, stylesheets, and JavaScripts from an asset server
config.action_controller.asset_host = "YOUR_DOMAIN_NAME/main"
# ActionMailer Config
config.action_mailer.default_url_options = {
:host => "YOUR_DOMAIN_NAME",
:only_path => false,
:script_name => "/main"
}
在nginx配置文件中,添加以下行
location /main {
alias /var/deploy/sample_application/current/public;
try_files $uri @main;
}
location @main {
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://puma_sample_application;
}