如何反向代理activeadmin应用程序?

gipsam 发布于 2019-03-09 activeadmin 最后更新 2019-03-09 14:33 0 浏览

我想直接从2个不同子域访问我的rails / activeadmin应用程序的2个部分:

admin.domain.tld => http://localhost:9999/admin/login
api.domain.tlp => http://localhost:9999
我想出了这个配置,但这不起作用:
server {
    listen 80;
    server_name admin.domain.tld;
location / {
        proxy_pass http://localhost:9999/admin;
        proxy_set_header Host $host;
    }
}
注意:在ActiveAdmin中,/ admin会自动重定向到/ admin / login
server {
    listen 80;
    server_name api.domain.tld;
location / {
        proxy_pass http://localhost:9999;
        proxy_set_header Host $host;
    }
}
任何想法如何设置?
已邀请:

et_qui

赞同来自:

如果您将子域重定向到您的应用程序,我认为解决这个问题的一个好方法是检查请求子域,如果它等于admin,则重定向到/ admin。您可以在应用程序控制器中对默认操作执行此操作 EX:

if request.subdomain.present? && request.subdomain == 'admin' 
  redirect_to admin_path
end
在admin_path中,我的意思是activeadmin的默认路由的路径... 我从未使用过那颗宝石...... 我认为你可以处理你的应用程序中的子域,你只需要将它们重定向到应用程序,并在第一个控制器中检查你想要重定向的位置..但这只是解决这个问题的一种方法。当然,通过虚拟主机配置可以做到这一点...... 如果您不想在application_controller.rb中执行此操作,则可以在由应用程序的根负责的第一个控制器上执行此操作。想象一下你有:
class HomeController < ApplicationController
  before_filter :check_subdomains, :only=>[:index]
def index
end
private
def check_subdomains
    if request.subdomain.present? && request.subdomain == 'admin' 
      redirect_to admin_path
    elsif  request.subdomain.present? && request.subdomain == 'api'
      redirect_to api_path
    end
  end
end