在域的子 uri 部署 rails 应用程序

Deploy rails app at sub uri of a domain

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

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

nginx 和 puma 的配置是什么?

提前致谢!

不,您根本不应该配置 rails 应用程序。 事实上,您只需更改您的 nginx 配置即可。

它应该将根域请求代理到您的 wordpress 应用程序,并将子域请求代理到您的 rails 应用程序。

查看这个问题,获取nginx的配置How configure nginx for rails app as subdomain?

首先将您想要的子 uri 路径放入 application.rbmain

...
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;
}