2016-11-18 14 views
0

APIの使用のためにサブドメインを作成しました。今はapi.example.comのように見え、すべて正常に動作します。しかし、私はapi.example.comからhtmlビューへのアクセスを許可したいと思います。それはapiコールのみの応答でなければなりません。Nginx APIのサブドメイン

server { 
      listen 80; 
      listen [::]:80; 

      rails_env production; 
      root /home/example/current/public; 

      server_name example.com; 
      error_page 500 502 503 504 /50x.html; 

      location = /50x.html { 
       root html; 
      } 

} 

どのように私はそれを達成することができます

scope module: 'web' do 
    root 'home#index' 
end 

constraints subdomain: 'api' do 
    scope module: 'api' do 
     scope module: 'v1' do 

     end 
    end 
end 

私は、ビルド適切な場所ディレクティブexample.comドメインのためのブロックの下

server { 
     listen 80; 
     listen [::]:80; 

     rails_env production; 
     root /home/example/current/public; 

     server_name api.example.com; 
     #location ??? 
} 

を経由してそれを達成することができますね?

答えて

0

何でもをnginxに入れてください。それはすべてあなたのレールルータによって処理されます。

言って、あなたはこのコードを持っている:

scope module: 'web' do 
    root 'home#index' 

    resources :articles 
end 

constraints subdomain: 'api' do 
    scope module: 'api' do 
    scope module: 'v1' do 
     resources :articles 
    end 
    end 
end 

あなたのウェブ記事・コントローラは、HTMLを提供しています。 apiサブドメイン(http://api.example.com/articles/1)でアクセスしようとすると、このルートにこの制約が定義されていないため、404が表示されます。 http://api.example.com/api/v1/articles/1はhtmlではなくjsonをレンダリングするだけです。

+0

私は追加するのを忘れましたが、サブドメインのサブドメイン:api.subdomain.example.comです。 example.comはsubdomian.example.comとapi.subdomain.example.com以外のvpsにあります。しかし、同じLANです – mike927

+0

ほとんど違いはありません。 'web'制約の代わりに' before_action'で1行チェックを行うことができます。これはサブドメインをチェックします。これはウェブコントローラですが、apiサブドメインは404などのリダイレクトやレンダリングを行います。 –

+0

メインDNSサーバは、両方のドメイン(subdomianとapi.subdomain)が同じIPアドレスであることを示します – mike927

関連する問題