web-dev-qa-db-ja.com

柔軟なサブパスを使用したnginxproxy_passは可能ですか?

現在、これをproxy_passとして使用しています。これは正常に機能します

    location = /sms/resetpass {
             proxy_pass http://xxx.xxx.xxx.xxx/api/resetpass;
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection 'upgrade';
             proxy_set_header Host $Host;
             proxy_cache_bypass $http_upgrade;
    }

上記は問題なく動作しますが、次のような別のプロキシが必要かどうかを判断しました

    location = /sms/sample1 {
             proxy_pass http://xxx.xxx.xxx.xxx/api/sample1;
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection 'upgrade';
             proxy_set_header Host $Host;
             proxy_cache_bypass $http_upgrade;
    }

次に、別のlocation blockを作成する必要があります

このようなことは可能ですか?

    location = /sms/something_here {
             proxy_pass http://xxx.xxx.xxx.xxx/api/something_here;
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection 'upgrade';
             proxy_set_header Host $Host;
             proxy_cache_bypass $http_upgrade;
    }

ここで、something_hereはURLをsms/blahに渡すと、proxy_passapi/blahになります。

proxy_pass with subpathなどをグーグルで検索しようとしましたが、必要なものではないようです。だから私はこれが可能かどうか疑問に思っていますか、それとも私はそれを見つけるための正しい単語を知りませんでしたか?

アドバイスをよろしくお願いします。

1
Dora

Nginx locationおよびrewriteディレクティブを使用します。次のようなもので十分です。

location ~ ^/sms/ {
    rewrite ^/sms/(.*) /api/$1 break;
    proxy_pass http://1.2.3.4;
    ...
}

最初にテストすることを忘れないでください。

3
mforsetti