nginx: proxy_pass を使用してプロキシされた URL に追加する

nginx: proxy_pass を使用してプロキシされた URL に追加する

私は、PHP ベースのアプリケーションをホストするサーバーを再構成しなければならないというレガシー問題に取り組んでいます。決定事項の 1 つは、Apache から Nginx に移行することでした。

現在、アプリケーションは 2 種類の応答をホストしています。

/some/path -> HTML templates
/api/some/path -> JSON

アプリケーションは Laravel に基づいています。現在、2 つの仮想ホストmy.app.comとがありますapi.app.com。適切な解決策として私が考えたのは、api.app.comリクエスト パスの先頭に をmy.app.com追加して、/apiリクエストを にプロキシすることです。つまり、

GET api.app.com/user -> NGINX PROXY -> my.app.com/api/user

私は Nginx 設定の専門家ではありませんが、次のようにすればうまくいくと思います:

location / {
    proxy_pass http://my.app.com:8888/api;
    proxy_set_header X-Real-IP $remote_addr;
}

アイデアは、 から GET しようとしている人がapi.app.com/something実際に から応答を受け取るようにすることですmy.app.com/api/something が、それは機能しません。ルートにパスが見つからないという例外がアプリから引き続き表示されます。

ここで何が起こっているのか誰か教えてもらえますか?

答え1

ヒントhttps://serverfault.com/a/586607:

location ~ /(?<path>.*) {
    proxy_pass http://my.app.com:8888/api/$path;
    proxy_set_header X-Real-IP $remote_addr;
}

関連情報