문제:
- 나는 nginx 지시문을 사용하여 URI의 특정 경로(예: )가 있는 요청을 리디렉션
proxy_pass
합니다 .https
location
https://domain/path/index.html
http://container_ip:port/index.html
- 이는 초기 요청에 잘 작동합니다.
- 그러나 HTML 파일이 로드할 리소스를 지정하는 경우 클라이언트는 경로 없이 기본 URL만 사용하여 이러한 리소스를 검색합니다. 예에서는
https://domain/main.css
.
질문:
이러한 리소스도 원래 경로에서 검색되도록 nginx를 구성하려면 어떻게 해야 합니까? 예에서 https://domain/path/main.css
?
현재 잘못된 nginx 구성:
server {
listen 443 ssl;
server_name domain;
[...]
location /path/ {
proxy_set_header Host $host;
proxy_pass http://container_ip:port/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
답변1
리소스 경로는 애플리케이션에 의해 생성됩니다. 적절하고 안정적인 접근 방식은 올바른 경로로 리소스 URL을 생성하도록 애플리케이션을 수정하는 것입니다.
신뢰할 수 없는 솔루션을 원한다면 다음을 사용해 볼 수 있습니다.http://nginx.org/en/docs/http/ngx_http_sub_module.htmlnginx가 프록시하는 응답에서 리소스 URL을 대체합니다. 그러나 진단하기 어려울 수 있는 원치 않는 부작용이 발생할 가능성이 있습니다.