내 환경에는 여러 시스템을 통과하는 사용자 요청이 있습니다.
[클라이언트]-> [ELB] ---> [nginx]-> [웹]
(ELB = AWS Elastic Load Balancer)
이 답변 덕분에 nginx가 올바른 클라이언트 IP 주소를 결정하고 X-Forwarded-For
및 X-Real_IP
헤더 가있는 업스트림 서버 (웹)에 전달했습니다 . 관련 nginx 설정 :
real_ip_header X-Forwarded-For;
set_real_ip_from 10.0.0.0/8;
real_ip_recursive on;
proxy_set_header X-Real-IP $remote_addr;
내 문제는 이것이 nginx의 Real IP 모듈 이 기존 변수를 계산 결과로 대체$remote_addr
한다는 것입니다 X-Forwarded-For
. 이렇게하면 원래 클라이언트 IP가 제공되지만 실제로 요청을 프록시 (예 : ELB)로 보낸 시스템의 IP 주소가 손실됩니다.
전반적으로 클라이언트 IP를 갖는 것이 더 중요하지만 트래픽의 흐름을 이해하고 디버그 할 수 있도록 전체 요청 체인을 기록 할 수 있기를 바랍니다. 현재 nginx가 클라이언트 IP, 자체 IP 및 업스트림 서버 IP 만 기록하도록 할 수 있습니다. ELB IP도 기록하고 싶습니다.
내가 볼 X-Istence이 같은 질문 질문을 조금 운으로, 2013 년. 그 이후로 변경되거나 개선 된 것이 있습니까?
$realip_remote_addr
. 아름답게 작동합니다. 실제로 proxy_protocol을 작동 시키려고 노력했고 1.9.7에 대한 nginx 패치 노트를 보았습니다.