我目前有一個 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 請求代理到我的後端伺服器?謝謝。