하나의 nginx 인스턴스에서 다른 인스턴스로 실제 IP 주소를 전달하고 이를 로그에 기록합니다.

하나의 nginx 인스턴스에서 다른 인스턴스로 실제 IP 주소를 전달하고 이를 로그에 기록합니다.

내부 nginx 서버로 요청을 이동하여 호출에 추가합니다.

proxy_set_header X-Real-IP $remote_addr;

로그에 이 값을 인쇄하려고 하면 내부 nginx 컨테이너가 충돌합니다.

log_format verbose ' Real: $X-Real-IP ';

내가 도대체 ​​뭘 잘못하고있는 겁니까? (또한 변수 주위에 ""를 사용해 보았지만 도움이 되지 않았습니다.)

답변1

서버는 X-Real-IPHTTP 요청의 헤더 중 하나로 수신합니다. Nginx는 각 요청 헤더 값을 변수로 사용할 수 있도록 합니다.

http 요청 헤더 값의 변수 이름은 $http_. 헤더 이름은 소문자로 변환되고 각 하이픈은 밑줄로 대체됩니다.

예를 들어 X-Real-IP다음과 같이 사용할 수 있습니다.$http_x_real_ip

보다이 문서자세한 내용은.

답변2

ngx_http_realip_modulenginx가 헤더의 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 주소로 출력합니다.

관련 정보