내부 nginx 서버로 요청을 이동하여 호출에 추가합니다.
proxy_set_header X-Real-IP $remote_addr;
로그에 이 값을 인쇄하려고 하면 내부 nginx 컨테이너가 충돌합니다.
log_format verbose ' Real: $X-Real-IP ';
내가 도대체 뭘 잘못하고있는 겁니까? (또한 변수 주위에 ""를 사용해 보았지만 도움이 되지 않았습니다.)
답변1
서버는 X-Real-IP
HTTP 요청의 헤더 중 하나로 수신합니다. Nginx는 각 요청 헤더 값을 변수로 사용할 수 있도록 합니다.
http 요청 헤더 값의 변수 이름은 $http_
. 헤더 이름은 소문자로 변환되고 각 하이픈은 밑줄로 대체됩니다.
예를 들어 X-Real-IP
다음과 같이 사용할 수 있습니다.$http_x_real_ip
보다이 문서자세한 내용은.
답변2
ngx_http_realip_module
nginx가 헤더의 IP 주소를 nginx 내부의 모든 소스 IP로 사용하도록 하는 데 사용할 수 있습니다 .
다음과 같이 구성됩니다.
set_real_ip_from 192.168.1.1 # IP address of the external nginx
real_ip_header X-Real-IP;
이 모듈을 사용하면 자체 로그 형식을 정의할 필요가 없습니다. nginx는 로그 파일 및 기타 모든 위치에 실제 클라이언트 IP를 소스 IP 주소로 출력합니다.