nginxのproxy_passの設定の違い

違うのはわかっていても、なかなか覚えらないのでメモしておく。

nginxでリバースプロキシの設定をするとき、 Request URLによって、転送したいURLを指定するが、末尾のスラッシュの有無で振る舞いが異なる。

以下の場合は、指定したサーバに転送はされるが、Request URLそのまま転送される。

location /path {
    proxy_pass http://localhost:3000;
}

つまり以下のURLに転送されることになる。

https://localhost:3000/path

次に末尾にスラッシュを付けたURLを指定した場合は、Request URLから/pathが除かれて転送される。

location /path {
    proxy_pass http://localhost:3000/;
}

つまり以下のURLに転送されることになる。

http://localhost:3000/