
我正在嘗試使用基本的 nginx 反向代理來存取三個不同的應用程序,每個應用程式都在 Docker 容器內運行。 nginx 反向代理已提供服務http://127.0.0.1:8080
,我希望具有以下行為:
http://127.0.0.1:8080/api
到 Django 後端 api 的路由http://127.0.0.1:8000/api
http://127.0.0.1:8080/
路由到運行的主 React 應用程式http://127.0.0.1:5200
http://127.0.0.1:8080/app2
路由到運行的第二個應用程式http://127.0.0.1:5300
這是nginx.conf
events {}
http {
server {
listen 8080;
server_name 127.0.0.1;
rewrite_log on;
error_log /var/log/nginx/error.log notice;
# debug with cache off
add_header Cache-Control no-cache;
location / {
proxy_pass http://127.0.0.1:5200;
proxy_set_header Host 127.0.0.1:5200;
}
location /api {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host 127.0.0.1:8000;
}
location = /app2 {
return 302 /app2/;
}
location /app2/ {
proxy_pass http://127.0.0.1:5300/;
proxy_set_header Host 127.0.0.1:5300;
}
if ($http_referer ~ https?://[^/]+/app2/(.*))
{
# rewrite request URI only if it isn't already started with '/app2' prefix
rewrite ^((?!/app2).*) /app2$1;
}
}
}
如果我在第二個應用程式中使用這些路由,則http://127.0.0.1:8080/app2
不會載入頁面,並且我從 nginx 反向代理程式取得以下日誌
<BrowserRouter>
<Routes>
<Route path="/" element={<Comp />} />
<Route path="/test" element={<Comp2 />} />
</Routes>
</BrowserRouter>
127.0.0.1 - - [16/Sep/2023:22:47:25 +0000] "GET /app2 HTTP/1.1" 302 145 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
127.0.0.1 - - [16/Sep/2023:22:47:25 +0000] "GET /app2/ HTTP/1.1" 200 1052 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
2023/09/16 22:47:25 [warn] 29#29: *1 an upstream response is buffered to a temporary file /var/cache/nginx/proxy_temp/1/00/0000000001 while reading upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /app2/main.js HTTP/1.1", upstream: "http://127.0.0.1:5300/main.js", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [16/Sep/2023:22:47:25 +0000] "GET /app2/main.js HTTP/1.1" 200 9778028 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
我向第二個應用程式添加了一條全部路由以進行測試
<BrowserRouter>
<Routes>
<Route path="/" element={<Comp2 />} />
<Route path="/aaa" element={<Comp2 />} />
<Route path="/bbb" element={<Comp />} />
<Route path="*" element={<Comp />} />
</Routes>
</BrowserRouter>
這次,頁面加載,但顯示了 app2 的所有路徑Comp
,catch all 規則優先。這是當我嘗試透過反向代理存取時http://127.0.0.1:8080/app2
,但是當直接在其伺服器上存取第二個應用程式時http://127.0.0.1:5300
,路徑會載入正確的元件
這是來自 1/ 反向代理和 2/ app2 nginx 伺服器的日誌,當點擊http://127.0.0.1:8080/app2
1/ nginx 反向代理時
2023/09/22 06:19:32 [notice] 29#29: *12 "https?://[^/]+/app2/(.*)" does not match "", client: 127.0.0.1, server: 127.0.0.1, request: "GET /app2/ HTTP/1.1", host: "127.0.0.1:8080"
127.0.0.1 - - [22/Sep/2023:06:19:32 +0000] "GET /app2/ HTTP/1.1" 200 1051 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
2023/09/22 06:19:32 [notice] 29#29: *12 "https?://[^/]+/app2/(.*)" matches "http://127.0.0.1:8080/app2/", client: 127.0.0.1, server: 127.0.0.1, request: "GET /app2/main.js HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:32 [notice] 29#29: *12 "^((?!/app2).*)" does not match "/app2/main.js", client: 127.0.0.1, server: 127.0.0.1, request: "GET /app2/main.js HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:32 [warn] 29#29: *12 an upstream response is buffered to a temporary file /var/cache/nginx/proxy_temp/2/00/0000000002 while reading upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /app2/main.js HTTP/1.1", upstream: "http://127.0.0.1:5300/main.js", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [22/Sep/2023:06:19:32 +0000] "GET /app2/main.js HTTP/1.1" 200 9875574 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
2023/09/22 06:19:33 [notice] 29#29: *12 "https?://[^/]+/app2/(.*)" matches "http://127.0.0.1:8080/app2/", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_1.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *12 "^((?!/app2).*)" matches "/assets/img/faces/face_1.jpg", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_1.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *12 rewritten data: "/app2/assets/img/faces/face_1.jpg", args: "", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_1.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *11 "https?://[^/]+/app2/(.*)" matches "http://127.0.0.1:8080/app2/", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_4.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *11 "^((?!/app2).*)" matches "/assets/img/faces/face_4.jpg", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_4.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *11 rewritten data: "/app2/assets/img/faces/face_4.jpg", args: "", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_4.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/faces/face_1.jpg HTTP/1.1" 200 64369 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
2023/09/22 06:19:33 [notice] 29#29: *1 "https?://[^/]+/app2/(.*)" matches "http://127.0.0.1:8080/app2/", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_3.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *1 "^((?!/app2).*)" matches "/assets/img/faces/face_3.jpg", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_3.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *1 rewritten data: "/app2/assets/img/faces/face_3.jpg", args: "", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_3.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/faces/face_4.jpg HTTP/1.1" 200 56227 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
2023/09/22 06:19:33 [notice] 29#29: *12 "https?://[^/]+/app2/(.*)" matches "http://127.0.0.1:8080/app2/", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_5.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *12 "^((?!/app2).*)" matches "/assets/img/faces/face_5.jpg", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_5.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *12 rewritten data: "/app2/assets/img/faces/face_5.jpg", args: "", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_5.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/faces/face_3.jpg HTTP/1.1" 200 59833 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
2023/09/22 06:19:33 [notice] 29#29: *10 "https?://[^/]+/app2/(.*)" matches "http://127.0.0.1:8080/app2/", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_6.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *10 "^((?!/app2).*)" matches "/assets/img/faces/face_6.jpg", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_6.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *10 rewritten data: "/app2/assets/img/faces/face_6.jpg", args: "", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_6.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *1 "https?://[^/]+/app2/(.*)" matches "http://127.0.0.1:8080/app2/", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_2.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *1 "^((?!/app2).*)" matches "/assets/img/faces/face_2.jpg", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_2.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *1 rewritten data: "/app2/assets/img/faces/face_2.jpg", args: "", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/faces/face_2.jpg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/faces/face_5.jpg HTTP/1.1" 200 66106 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
127.0.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/faces/face_6.jpg HTTP/1.1" 200 60971 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
127.0.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/faces/face_2.jpg HTTP/1.1" 200 80120 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
2023/09/22 06:19:33 [notice] 29#29: *10 "https?://[^/]+/app2/(.*)" matches "http://127.0.0.1:8080/app2/", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/css/fonts/Font-Awesome/fontawesome-webfont.woff2?v=4.7.0 HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *10 "^((?!/app2).*)" matches "/assets/css/fonts/Font-Awesome/fontawesome-webfont.woff2", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/css/fonts/Font-Awesome/fontawesome-webfont.woff2?v=4.7.0 HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *10 rewritten data: "/app2/assets/css/fonts/Font-Awesome/fontawesome-webfont.woff2", args: "v=4.7.0", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/css/fonts/Font-Awesome/fontawesome-webfont.woff2?v=4.7.0 HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/css/fonts/Font-Awesome/fontawesome-webfont.woff2?v=4.7.0 HTTP/1.1" 200 77160 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
2023/09/22 06:19:33 [notice] 29#29: *12 "https?://[^/]+/app2/(.*)" matches "http://127.0.0.1:8080/app2/", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/css/fonts/Pe-Icon-Stroke/Pe-icon-7-stroke.woff?d7yf1v HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *12 "^((?!/app2).*)" matches "/assets/css/fonts/Pe-Icon-Stroke/Pe-icon-7-stroke.woff", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/css/fonts/Pe-Icon-Stroke/Pe-icon-7-stroke.woff?d7yf1v HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *12 rewritten data: "/app2/assets/css/fonts/Pe-Icon-Stroke/Pe-icon-7-stroke.woff", args: "d7yf1v", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/css/fonts/Pe-Icon-Stroke/Pe-icon-7-stroke.woff?d7yf1v HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/css/fonts/Pe-Icon-Stroke/Pe-icon-7-stroke.woff?d7yf1v HTTP/1.1" 200 58556 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
2023/09/22 06:19:33 [notice] 29#29: *1 "https?://[^/]+/app2/(.*)" matches "http://127.0.0.1:8080/app2/", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/header-1.jpeg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *1 "^((?!/app2).*)" matches "/assets/img/header-1.jpeg", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/header-1.jpeg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *1 rewritten data: "/app2/assets/img/header-1.jpeg", args: "", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/header-1.jpeg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/header-1.jpeg HTTP/1.1" 200 430070 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
2023/09/22 06:19:33 [notice] 29#29: *11 "https?://[^/]+/app2/(.*)" matches "http://127.0.0.1:8080/app2/", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/header-2.jpeg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *11 "^((?!/app2).*)" matches "/assets/img/header-2.jpeg", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/header-2.jpeg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *11 rewritten data: "/app2/assets/img/header-2.jpeg", args: "", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/header-2.jpeg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/header-2.jpeg HTTP/1.1" 200 238167 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
2023/09/22 06:19:33 [notice] 29#29: *10 "https?://[^/]+/app2/(.*)" matches "http://127.0.0.1:8080/app2/", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/office-1.jpeg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *10 "^((?!/app2).*)" matches "/assets/img/office-1.jpeg", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/office-1.jpeg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:33 [notice] 29#29: *10 rewritten data: "/app2/assets/img/office-1.jpeg", args: "", client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/img/office-1.jpeg HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/office-1.jpeg HTTP/1.1" 200 383149 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
2023/09/22 06:19:34 [notice] 29#29: *10 "https?://[^/]+/app2/(.*)" matches "http://127.0.0.1:8080/app2/", client: 127.0.0.1, server: 127.0.0.1, request: "GET /app2/favicon.png HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:34 [notice] 29#29: *10 "^((?!/app2).*)" does not match "/app2/favicon.png", client: 127.0.0.1, server: 127.0.0.1, request: "GET /app2/favicon.png HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [22/Sep/2023:06:19:34 +0000] "GET /app2/favicon.png HTTP/1.1" 200 143748 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
2023/09/22 06:19:34 [notice] 29#29: *10 "https?://[^/]+/app2/(.*)" matches "http://127.0.0.1:8080/app2/", client: 127.0.0.1, server: 127.0.0.1, request: "GET /static/assets/img/favicon.png HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:34 [notice] 29#29: *10 "^((?!/app2).*)" matches "/static/assets/img/favicon.png", client: 127.0.0.1, server: 127.0.0.1, request: "GET /static/assets/img/favicon.png HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
2023/09/22 06:19:34 [notice] 29#29: *10 rewritten data: "/app2/static/assets/img/favicon.png", args: "", client: 127.0.0.1, server: 127.0.0.1, request: "GET /static/assets/img/favicon.png HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [22/Sep/2023:06:19:34 +0000] "GET /static/assets/img/favicon.png HTTP/1.1" 200 1051 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
2/ app2的nginx伺服器
172.17.0.1 - - [22/Sep/2023:06:19:32 +0000] "GET / HTTP/1.0" 200 1051 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"
172.17.0.1 - - [22/Sep/2023:06:19:32 +0000] "GET /main.js HTTP/1.0" 200 9875574 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"
172.17.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/faces/face_1.jpg HTTP/1.0" 200 64369 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"
172.17.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/faces/face_4.jpg HTTP/1.0" 200 56227 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"
172.17.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/faces/face_3.jpg HTTP/1.0" 200 59833 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"
172.17.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/faces/face_5.jpg HTTP/1.0" 200 66106 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"
172.17.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/faces/face_6.jpg HTTP/1.0" 200 60971 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"
172.17.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/faces/face_2.jpg HTTP/1.0" 200 80120 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"
172.17.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/css/fonts/Font-Awesome/fontawesome-webfont.woff2?v=4.7.0 HTTP/1.0" 200 77160 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"
172.17.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/css/fonts/Pe-Icon-Stroke/Pe-icon-7-stroke.woff?d7yf1v HTTP/1.0" 200 58556 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"
172.17.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/header-1.jpeg HTTP/1.0" 200 430070 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"
172.17.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/header-2.jpeg HTTP/1.0" 200 238167 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"
172.17.0.1 - - [22/Sep/2023:06:19:33 +0000] "GET /assets/img/office-1.jpeg HTTP/1.0" 200 383149 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"
172.17.0.1 - - [22/Sep/2023:06:19:34 +0000] "GET /favicon.png HTTP/1.0" 200 143748 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"
172.17.0.1 - - [22/Sep/2023:06:19:34 +0000] "GET /static/assets/img/favicon.png HTTP/1.0" 200 1051 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"
我還嘗試對 nginx 使用重寫(以及許多 diff 正規表示式),但遇到了類似的錯誤
location /app2/ {
proxy_pass http://127.0.0.1:5300/;
proxy_set_header Host 127.0.0.1:5300;
rewrite ^/app2/(.*)$ /$1 break;
}
如何配置 nginx 反向代理以/app2
從路徑中刪除並從目標應用程式返回正確的頁面。
答案1
我想我明白你想要解決什麼問題。
當您從中請求頁面時,它/app2/
會嘗試載入其他資源/main.js
,例如 ,這會導致 404 錯誤,因為它應該是/app2/main.js
這樣。
如果這是您的問題,您正在嘗試一種極其複雜且不必要的方法來解決它。
我進一步假設第二個應用程式也是一個 React 應用程序,就像第一個應用程式一樣。如果是這種情況,您只需要正確配置應用程式的基本 URL。
在
package.json
檔案中將條目變更homepage
為相對路徑,不包括任何子網域/巢狀目錄。
在你的情況下,這將是:
{
...,
"homepage": "/app2/",
...
}
然後,您的 nginx 設定中唯一需要的是:
location /app2/ {
proxy_pass http://127.0.0.1:5300/;
### I don't think the Host header is even necessary
# proxy_set_header Host 127.0.0.1:5300;
}
您的 React 應用程式現在應該會自動為反向代理程式產生正確的 URL。