我正在嘗試配置一個 nginx Docker 容器,以在其根路徑(到目前為止有效)上為 Angular 應用程式提供服務,并通過 /api 上的代理使后端可用。
我已經閱讀了 Stackoverflow 和一些博客上的多個執行緒,但到目前為止沒有任何配置起作用。如果我在 / Angular 應用程式上呼叫我的應用程式。當我嘗試在同一個 url 上呼叫 /api 時,它被重定向到 / 并且沒有顯示任何內容——我猜 Angular 路由器有一些它無法處理的路由。但是 Nginx 應該在呼叫 Angular 應用程式之前捕獲該路由。我怎么做?
我不確定出了什么問題。您在我的配置中看到錯誤了嗎?
server {
listen 80;
sendfile on;
default_type application/octet-stream;
gzip on;
gzip_http_version 1.1;
gzip_disable "MSIE [1-6]\.";
gzip_min_length 256;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml rss text/javascript;
gzip_comp_level 9;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html =404;
}
location /api/ {
proxy_pass http://host.docker.internal:8080/api/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Edit1:我發現了一個問題:容器無法訪問 api-server。我在配置中將其更改為 host.docker.internal ,可通過docker ci. 但我仍然無法在 nginx 容器上呼叫 /api。我現在得到一個404。
uj5u.com熱心網友回復:
我會使用下面的語法讓 Nginx 知道這在您的通用位置location /之前。
location ^~ /api/ { }
您可以在此處閱讀更多資訊-> https://www.journaldev.com/26342/nginx-location-directive
uj5u.com熱心網友回復:
事實證明,上面的配置有效,我在另一個專案的錯誤檔案夾中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/421753.html
標籤:
上一篇:AngularHHTP請求的條件
下一篇:添加物件的路徑嵌套陣列
