Nginx。サーバーディレクティブの継承。


9

次のような建設を減らす方法はありますか?

server { 
  server_name regular_site; 
  location /api/ { 
     proxy_pass 127.0.0.1:5000;
  } 
  location / { 
     proxy_pass 127.0.0.1:3000;
  } 
} 

server { 
  server_name mobile_site; 
  location /api/ { 
     proxy_pass 127.0.0.1:5000;
  } 
  location / { 
     proxy_pass 127.0.0.1:3001;
  } 
} 

server api { 
  location /api/ { 
     proxy_pass 127.0.0.1:5000;
  } 
}

server extends api { 
  server_name regular_site;
  location / { 
     proxy_pass 127.0.0.1:3000;
  } 
} 

server extends api { 
  server_name mobile_site;
  location / { 
     proxy_pass 127.0.0.1:3001;
  } 
} 

APIセクションを取り除くためのその他のアドバイスは大歓迎です。


よくある質問をご覧ください。 あなたの質問は、このサイトのトピックから外れているように見えます。
HopelessN00b 2012年

@ HopelessN00b、はい、それはオフトピックのようです。しかし、ここではnginxについて3000の質問がありますが、これはこの場合は奇妙です。この質問はスタックオーバーフロー用ではないことは間違いありません。
Nikolay Fominyh 2012年

回答:


13

あなたはそれをincludeステートメントで非常に簡単に行うことができます。

/etc/nginx/conf/api_defaults.conf

location /api/ { 
  proxy_pass 127.0.0.1:5000;
}    

次に、メインの構成でvhost

/etc/nginx/sites-enabled/my_new_api.conf

server my_new_api {  
  server_name mobile_site;

  include "/etc/nginx/conf/api_defaults.conf";

  location / { 
    proxy_pass 127.0.0.1:3001;
  }         
}

つまり、ロケーションブロックはサーバーブロックに継承されません。これは、すべての仮想ホストによって継承される仮想ホストの外部で定義された場所を持つことができるApacheの方法とは異なります。Nginxでは、共通の構成を各サーバーブロックに明示的に含める必要があります。
JMベッカー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.