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>
}
}