Nginx 역방향 프록시 리디렉션

Nginx 역방향 프록시 리디렉션

저는 이를 nginx역방향 프록시로 사용하고 있는데 웹 인터페이스에 로그인하면 프록시 URL로 리디렉션됩니다. 나는 이것을 피하고 항상 "server_name"을 URL로 유지하고 싶습니다. 가능합니까?

이 내 꺼야 /etc/nginx/conf.d/my_app.conf:

server { 
    listen 443 ssl; 
    server_name my-app.net; 
    ssl_certificate /etc/pki/tls/certs/my-app.cer; 
    ssl_certificate_key /etc/pki/tls/private/my-app.key; 
    ssl_protocols TLSv1.1 TLSv1.2; 
    access_log /var/log/nginx/my-app.access.log main; 

    location / { 
        proxy_pass http://ip_of_the_app:7180/; 
        proxy_redirect off; 
    } 
} 

연결하고 http://my-app.net로그인 정보를 입력하면 http://ip_of_the_app:7180동일한 로그인 페이지로 리디렉션되어 다시 로그인해야 합니다. 이중 로그인을 피할 수 있나요?

답변1

proxy_redirect그렇게 설정하지 마십시오 off. 그것은 당신이 생각하는 일을 하고 있지 않습니다. proxy_redirectURL 재작성과 유사한 작업을 수행합니다. 예를 들면 다음과 같습니다.

location /sales/ { 
    proxy_pass http://ip_of_the_app:7180/; 
    proxy_redirect http://ip_of_the_app:7180/ http://$host/sales/; 
}

이를 통해 경로를 /sales/다른 곳에서 호스팅할 수 있습니다. 하지만 그렇더라도 기본 매개변수를 사용하면 proxy_redirect무료로 이를 수행할 수 있습니다. 기본값은 존재하는 모든 위치로 위치를 리디렉션하는 것입니다(전혀 설정하지 않거나 사용하는 경우 proxy_pass기본 매개변수가 사용됩니다).proxy_redirectproxy_redirect default;

설정할 필요가 없습니다 proxy_redirect.


누락된 것은 애플리케이션에 전송해야 하는 헤더입니다. 그 중 가장 중요한 것은 HOST. 이렇게 하면 필요에 따라 프록시가 수행되고 브라우저에 올바른 URL이 유지됩니다.

location / { 
    proxy_pass http://ip_of_the_app:7180/; 
    proxy_set_header HOST $host;
}

이제 애플리케이션은 http://ip_of_the_app:7180/헤더가 포함된 요청을 받게 됩니다 Host: my-app.net.


또한 더 많은 헤더 사용을 고려해야 합니다.

proxy_set_header Referer $http_referer;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;

이렇게 하면 애플리케이션 내에서 더 나은 로그인이 가능해집니다 http://ip_of_the_app:7180/. X-Forwarded-For실제 클라이언트의 IP( nginxIP가 아님)를 제공하고 X-Forwarded-Proto클라이언트가 nginxHTTP 또는 HTTPS를 통해 연결되어 있는지 확인합니다.

관련 정보