在域的子uri上部署rails app

时间:2015-03-03 11:51:48

标签: ruby-on-rails nginx production puma

我们已经使用Nginx和puma为我们的rails应用程序设置了一个生产服务器。我们想在子uri和主域上部署我们的rails应用程序,我们希望将wordpress用于主页,定价页面等。

我们如何配置能够在具有Devise gem作为身份验证的子uri上运行的rails。我们是否需要更改子uri的路线?

nginx和puma的配置是什么?

提前致谢!

2 个答案:

答案 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;
}