web-dev-qa-db-ja.com

nginxのサブドメインリクエストに基づいて異なるプロキシをルーティングする

5つのnodejsアプリケーションをデプロイしたサーバーに専用サーバーが1つあります。

domain name: www.nnd.com
dedicated server ip: xxx.xx.x.60

私の専用サーバーIPを指すドメインがありました。

サブドメインは次のとおりです。

app1.nnd.com pointed to xxx.xx.x.60
app2.nnd.com pointed to xxx.xx.x.60
app3.nnd.com pointed to xxx.xx.x.60
app4.nnd.com pointed to xxx.xx.x.60
app5.nnd.com pointed to xxx.xx.x.60

プロキシをルーティングする必要があるサブドメインに基づいてnginx構成ファイルになりました。例:

{
    listen:80;
    server_name:xxx.xx.x.60
    location / {
        #here based on subdomain of the request I need to create proxy_pass for my node application 
    }
}

条件はありますか?プロキシヘッダーから元のドメイン名を取得するにはどうすればよいですか?

37
sridhar

それぞれの仮想ホストを作成します

server {
  server_name sub1.example.com;
  location / {
    proxy_pass http://127.0.0.1:xxxx;
  }
}
server {
  server_name sub2.example.com;
  location / {
    proxy_pass http://127.0.0.1:xxxx;
  }
}

続けて、正しいポートに一致するようにポート番号を変更します。

47

RegExpを使用して、このようなホスト名を取得できます

server {
    server_name   ~^(www\.)?(?<domain>.+)$;

    location / {
        root   /sites/$domain;
    }
}
17
Chia-Yu Pai

サブドメインごとに仮想ホストを作成できます。

Exの場合、2つのサブドメインabc.xyz.comとabcd.xyz.comがあり、proxy_passによってnginxの単一インスタンスでホストしたいすべてのサブドメインに仮想ホストを作成できます

server {
  server_name abc.xyz.com;
  location / {
    proxy_pass http://127.0.0.1:8000;
  }
}
server {
  server_name abcd.xyz.com;
  location / {
    proxy_pass http://127.0.0.1:8000;
  }
}

詳細については、 here を参照してください。

3
abhaygarg12493