nginx 리버스 프록시가 애플리케이션 IP를 대체하지 않음

nginx 리버스 프록시가 애플리케이션 IP를 대체하지 않음

nginx 뒤에 애플리케이션이 있는데 분명히 원하는 대로 작동하지 않습니다. 그래서 로컬 환경에서 복제를 시도했습니다.

배경 웹 응용 프로그램은 자체적으로 잘 실행되고 있으며 /static/index.html을 기본 페이지로 반환합니다. 예를 들어 액세스할 때http://localhost:7777//static/index.html을 반환하고 모두 잘 작동합니다. {http://localhost:7777/static/index.html}

문제 프록시 뒤에 있는 동일한 앱에 액세스하려고 하면 작동하지 않습니다. http://localhost/app{ localhost는 nginx의 서버 기본값 이름 }에 액세스하면 앱은 평소와 같이 /static/index.html을 반환하고 tp를 다시 라우팅 http://localhost/static/index.html하고 404를 반환합니다.

원하는 상황 앱이 프록시 뒤에 있더라도 앱을 볼 수 있어야 합니다. 대신 http://localhost/static/index.htmlURL은 다음과 유사해야 합니다.http://localhost/localhost:7777/static/index.html

nginx.conf

server {
    listen       80;
    server_name  localhost;

   location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location /app/ {
            proxy_pass http://localhost:7777/;
    proxy-redirect off;
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            proxy_buffering off;
            client_max_body_size 0;
            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_header       Set-Cookie;
            proxy_pass_header       P3P;
    }

어떤 아이디어가 어떻게 달성될 수 있습니까?

답변1

nginx.conf에 따라 프록시를 /app/ 위치로 제한하는 경우 /static/index.html이 프록시되지 않는다는 사실에 놀랄 필요는 없습니다. 을 추가하다

proxy_pass http://localhost:7777/;

위치로 이동한 다음 무슨 일이 일어나는지 확인하세요.

관련 정보