IP 기반 NGINX에서 위치 허용 - 요청은 Varnish에서 옵니다.

IP 기반 NGINX에서 위치 허용 - 요청은 Varnish에서 옵니다.

Varnish가 내 NGINX 백엔드 앞에 기본 캐시로 설정된 경우 NGINX 백엔드에서 클라이언트의 원래 IP를 확인하고 이를 기반으로 결정을 내릴 수 있는 방법은 무엇입니까?

특정 디렉토리를 특정 IP에만 허용하고 싶습니다. Varnish가 NGINX 앞에 있다는 것은 모든 요청이 127.0.0.1. 사용자 정의 HTTP 헤더를 설정하려고 하는데 location ~ /folder/ {}섹션과 함께 이를 어떻게 확인할 수 있습니까?

답변1

기본적으로 Varnish 4는 다음과 같이 설정됩니다.X-Forwarded-For 헤더클라이언트의 실제 IP로 지정되지만 NGINX는 명시적으로 설정하지 않는 한 이를 무시합니다.

다음 라인을 사용하는 서버 블록의 nginx 구성에 추가하십시오.ngx_http_realip_module:

server {
    listen 80;
    set_real_ip_from   127.0.0.1;
    real_ip_header     X-Forwarded-For;
    <Other Server Options>
}

Ubuntu를 사용하는 경우 모듈은 기본적으로 이미 활성화되어 있습니다. 그러나 일부 Linux 배포판의 경우 수동으로 활성화하거나 설치해야 할 수도 있습니다. 다음을 통해 구성된 모듈을 확인할 수 있습니다.

nginx -V

구성을 업데이트한 후 nginx를 다시 로드하는 것을 잊지 마세요.

sudo service nginx reload

nginx가 Varnish에 의해 설정된 클라이언트의 실제 IP를 얻을 수 있게 되면 위치 블록에 허용 및 거부 옵션을 배치하기만 하면 됩니다.

server {
    <Server Options>
    location ~ /folder/ {
        allow <IP to whitelist>;
        deny all;
        <Location Options>
    }
}

관련 정보