
nginx에서 localhost:20000의 다른 웹 서버를 프록시하려고 합니다. 이것은 작동합니다:
location/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:20000
}
그러나 다음과 같이 변경하면:
location /myApp {
proxy_set_header..
index.html 파일과 다른 모든 .css & .js 404만 로드할 수 있습니다. 브라우저 헤더에서 이러한 파일에 대한 요청이 mysite.com/myApp 대신 mysite.com/jquery.js로 이동하는 것을 볼 수 있습니다. /jquery.js이므로 해당 시점에서 프록시가 설정되지 않은 것으로 추측되므로 404가 됩니다. 이러한 URL에 대한 경로는 상대적으로 코딩됩니다(). 이것을 작동시키려면 어떻게 해야 합니까? 프록시된 index.html 파일의 경로를 변경할 수 없습니다. 감사해요
편집하다. 백엔드 웹 서버는 thttpd이며 오래되었습니다. 이것이 set_head 호스트에 영향을 미치나요? 죄송합니다. 해당 레이어가 어떻게 작동하는지 잘 모르겠습니다.
답변1
우선 , location /myApp {}
이상이어야 합니다 location {}
. 둘째, 아마도 더 중요한 것은 root
다음과 같은 섹션을 적절하게 할당하고 추가하여 정적 파일을 직접 제공할 수 있다는 것입니다.
location ~* \.(css|jpg|png|gif|jpeg|js|ico|swf|mp3)$ { break; }
대신 URI를 수정하려는 경우 다음 location / {}
섹션에서 도움이 될 수 있습니다.
rewrite ^/(.*)$ /myApp/$1 break;