將所有請求代理到後端伺服器

將所有請求代理到後端伺服器

我目前有一個 Angular 應用程序,它從 Symfony 後端獲取數據。在開發時,我使用ng serve開發伺服器代理系統將/api/oauth-token/media路由重定向到後端伺服器,效果很好。

現在我想將應用程式部署到 Web 伺服器,我設定了一個 Nginx 伺服器,為建置的 Angular 應用程式產生的靜態檔案提供服務。由於開發伺服器不再代理請求,我必須透過 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 執行個體上,但連接埠不同(連接埠 81 而不是 80)。

我嘗試將每個路徑的位置區塊分成 3 個單獨的區塊,以防我的正規表示式或代理傳遞錯誤,但我得到了相同的結果:

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

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

我還嘗試刪除代理傳遞 URL 末尾的尾部斜杠,看看這是否是問題所在,但無濟於事。

我嘗試遵循在伺服器故障的其他帖子中找到的建議,但遺憾的是沒有一個對我有用。

您能否幫我配置此文件,以便將這些 API 請求代理到我的後端伺服器?謝謝。

相關內容