Nnginx は 1 つのロケーション ディレクティブで URL を proxy_pass にマップします。

Nnginx は 1 つのロケーション ディレクティブで URL を proxy_pass にマップします。

UNIX ソケット パスに一致する URL を通じて利用できるノード Web ソケットが複数あります。場所ディレクティブを複製する代わりに、ソケット名として使用される URL のリストのようなものを用意したいと思います。ソケット名のパスが必要なので、正規表現を使用しても機能しません。

現在、この場所を使用しています:

location /application1/
{
   proxy_pass http://unix:/var/run/nodejs/application1;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
}

目標は次のようになります。

$list = [app1, app2, app3];           #list of possible names
location /$list/   #match all names in the list
{
   proxy_pass http://unix:/var/run/nodejs/$list_matched;   #use matched name
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
}

基本的に、リスト内のすべての URL は同じ名前のソケットにリダイレクトされる必要があります。

ご協力いただければ幸いです:)

答え1

location ~* /(<regexp>)/ {
    proxy_pass http://unix:/var/run/nodejs/$1;   #use matched name
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

答え2

正規表現を使用する必要があります。このようなものが機能するはずですが、正規表現は自分で考えなければなりません。チュートリアルはたくさんあり、正規表現実験サイト

location ~ (app1|app2|app3)$ {

関連情報