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

关于如何设置的任何想法?

4

1 回答 1

1

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

if request.subdomain.present? && request.subdomain == 'admin' 
  redirect_to admin_path
end

在 admin_path 中,我的意思是 activeadmin 的默认路由的路径...我从未使用过那个 gem...

我认为您可以处理应用程序中的子域,您只需将它们重定向到应用程序,然后在第一个控制器中检查您要重定向的位置。但这只是处理它的一种方法。当然有办法通过虚拟主机配置来做到这一点......

如果您不想在 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
于 2013-04-11T16:12:22.293 回答