すべてのリクエストをバックエンドサーバーにプロキシする

すべてのリクエストをバックエンドサーバーにプロキシする

現在、Symfony バックエンドからデータを取得する Angular アプリがあります。開発中は、、およびルートをバックエンド サーバーにリダイレクトするために開発サーバー プロキシ システムを使用しましたが、問題なく動作しましたng serve/api/oauth-token/media

アプリを Web サーバーにデプロイしたいので、ビルドした Angular アプリによって生成された静的ファイルを提供する Nginx サーバーをセットアップしました。開発サーバーはリクエストをプロキシする機能を持たないため、リバース プロキシが機能するように Nginx の conf ファイルを通じてこれを実行する必要があります。

必要なのは、 のようなものをリクエストするとGET http://localhost/api/products/1、このリクエストが にプロキシされることですGET http://localhost:81/api/products/1。これは、POST、PUT、PATCH などの他のすべてのリクエスト メソッドでも同じです。

問題は、このユースケースのニーズに合った conf ファイルを作成できないことです。 得られる最良の結果は、302 または 405 の応答です。

現在持っている conf ファイルは次のとおりです:

server {
    server_name localhost;
    root /var/www/webapp;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location ~ ^/(?:oauth-token|api|media)/ {
        proxy_pass http://localhost:81;
    }
}

バックエンドは、フロントエンドと同じサーバーおよび nginx インスタンスでホストされていますが、ポートが異なります (ポート 80 ではなく 81)。

正規表現またはプロキシ パスが間違っている場合に備えて、場所ブロックをルートごとに 3 つの個別のブロックに分割してみましたが、結果は同じでした。

    location /api/ {
        proxy_pass http://localhost:81/api/;
    }

    location /oauth-token/ {
        proxy_pass http://localhost:81/oauth-token/;
    }

また、プロキシ パス URL の末尾のスラッシュを削除して、それが問題であるかどうかを確認しようとしましたが、効果はありませんでした。

Server Fault の他の投稿で見つけたアドバイスに従ってみましたが、残念ながらどれもうまくいきませんでした。

これらの API リクエストがバックエンド サーバーにプロキシされるようにこのファイルを構成するのを手伝っていただけますか? ありがとうございます。

関連情報