
에서 실행되는 기본 nginx 프록시가 있습니다 http://127.0.0.1:8080
.
이것이 nginx.conf
:
events {}
http {
server {
listen 8080;
server_name 127.0.0.1;
rewrite_log on;
error_log /var/log/nginx/error.log notice;
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;
}
}
}
을 누르면 http://127.0.0.1:8080/app2
포트에서 실행 중인 앱이 5300
표시되지만 자산이 올바르게 로드되지 않습니다. 나는 nginx가 자산에 대한 요청을 포트에서 실행되는 다른 앱으로 프록시하고 5200
있다고 의심했습니다 location /
. 확인을 위해 이 앱을 중지했는데 이는 nginx의 로그입니다(업스트림은 으로 표시되지만 http://127.0.0.1:5200...
이어야 함 http://127.0.0.1:5300...
).
2023/09/17 23:47:32 [error] 29#29: *10 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/css/fonts/Pe-Icon-Stroke/Pe-icon-7-stroke..ttf?d7yf1v HTTP/1.1", upstream: "http://127.0.0.1:5200/assets/css/fonts/Pe-Icon-Stroke/Pe-icon-7-stroke..ttf?d7yf1v", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [17/Sep/2023:23:47:32 +0000] "GET /assets/css/fonts/Pe-Icon-Stroke/Pe-icon-7-stroke..ttf?d7yf1v HTTP/1.1" 502 559 "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/17 23:47:32 [error] 29#29: *10 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/css/fonts/Font-Awesome/fontawesome-webfont..ttf?v=4.7.0 HTTP/1.1", upstream: "http://127.0.0.1:5200/assets/css/fonts/Font-Awesome/fontawesome-webfont..ttf?v=4.7.0", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [17/Sep/2023:23:47:32 +0000] "GET /assets/css/fonts/Font-Awesome/fontawesome-webfont..ttf?v=4.7.0 HTTP/1.1" 502 559 "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"
자산이 로드되지 않았습니다 http://127.0.0.1:8080/api
. diff 정규식 조합을 사용하여 규칙 다시 작성을 시도했지만 비슷한 오류가 발생했습니다.
다른 앱으로 라우팅하고 해당 자산을 올바르게 로드하도록 nginx를 구성하는 방법
답변1
추가 조사 및 테스트를 거친 후 rewrite
솔루션에 대한 자세한 내용은https://stackoverflow.com/questions/62836801/nginx-reverse-proxy-how-to-serve-multiple-apps내 경우에는 일했습니다.
이것은 app2 자산을 올바르게 로드하기 위해 nginx.conf에 추가한 스니펫입니다.
if ($http_referer ~ https?://[^/]+/app2/(.*))
{
# rewrite request URI only if it isn't already started with '/app2' prefix
rewrite ^((?!/app2).*) /app2$1;
}