我正在制作一個多容器應用程式,與前端的 nginx 和后端的 Spring Boot 做出反應。
在添加 nginx 之前,我將localhost:3000作為我的反應應用程式,將localhost:8080作為我的 spring API。在3000/themes 中,我可以看到 react 頁面,而在/themes 中,我可以訪問 API,因為localhost:8080是 package.json 中的代理行。
將此適應 docker-compose 背景關系,我更改為下面的代碼,但在localhost:80/themes 中,我只能訪問 API,這是意料之中的。如果我把行 “proxy_pass http://backend;” 在"location /api {}" 中,當訪問localhost/api 時,我會得到我的個性化 404 頁面,因為/api不是 react-route 中的路由,也不應該是。我想要一個非反應路由來為我的 api 提供服務,例如代理行中的“http:backend/api”,在“localhost/themes”中有我的主題頁面,在子組件中訪問“/themes”和從本地主機獲取此 API :
我的 nginx.conf 現在是:
upstream backend {
server app-server:8080;
}
server {
listen 80;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
proxy_pass http://backend;
}
error_page 401 403 404 index.html;
location /public {
root /usr/local/var/www;
}
}
我的 package.json 代理行是:
"proxy": "http://backend",
uj5u.com熱心網友回復:
您可以嘗試為 添加一個命名位置proxy_pass,并將其附加為的最后一個引數try_files
upstream backend {
server app-server:8080;
}
server {
listen 80;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ @proxy-backend;
}
location @proxy-backend {
proxy_pass http://backend;
}
error_page 401 403 404 index.html;
location /public {
root /usr/local/var/www;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/315295.html
