하위 폴더를 사용하는 nginx proxy_pass 포트를 사용하지 않아도됩니다. 여기 내 nginx 설정이 있습니다. server

좋아,이 작업은 간단해야하지만 제대로 작동하지 않습니다. 내 도메인 이름 뒤에 (실제로 해당 도메인 이름의 IP 뒤에) 하위 폴더를 만들고 싶습니다. 동일한 폴더의 특정 포트로 리디렉션됩니다. 본질적으로 많은 포트를 사용하지 않아도됩니다.

여기 내 nginx 설정이 있습니다.

server {
    listen 80;

    index index.html index.htm index.nginx-debian.html index.php;

    server_name aaa.bbb.ccc.ddd;

    location ^~ /app2 {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://aaa.bbb.ccc.ddd:8001;
    }
}

따라서 aaa.bbb.ccc.ddd / app2에 액세스하면 http : //aaa.bbb.ccc.ddd : 8001 로 해결하고 싶습니다 .

이것은 아마도 너무 복잡 할 수 있습니다. 내가 여기서 무엇을 놓치고 있습니까?

감사합니다 Pat



답변

이 질문을 리버스 프록시 질문으로 태그 했으므로 사용자가 http://aaa.bbb.ccc.ddd/app2브라우저에서 URL 만 볼 수 있도록 요청을 프록시하고 싶다고 가정 합니다.

location블록을 다음과 같이 변경할 수 있습니다 .

location ~/app2(.*)$ {
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://aaa.bbb.ccc.ddd:8001$1;
}

여기에서 우리는 후 URI 부분을 캡처 /app2하는 $1변수, 그리고 그것을 사용 proxy_pass지침.