일부 인터페이스는 사용자 정보 변경을 포함하며, 이 인터페이스들은 접근 당사자만 조정할 수 있게 해주기 때문에 nginx에 IP 화이트리스트가 있습니다.
이 장치는 접근 당사자의 종료 IP를 갖추고 있습니다.
여기 저희 nginx 접근 로그가 있습니다.
nginx는 $remote_addr을 실제 IP로 사용하지만, 실제로는 $http_X_Forwarded_For가 실제 사용자의 IP이고, $remote_addr은 f5(사용자 -->f5 ---> nginx)의 사설 네트워크 주소일 뿐입니다. 이로 인해 nginx는 잘못된 이름을 사용하게 되고, 인터페이스를 조정하는 사용자는 항상 403이 됩니다.
용액:
HTTP 모듈 플러스에서
set_real_ip_from 10.10.10.122; nginx에게 거기서 RealIP의 값을 가져오라고 하세요
real_ip_header X-Real-IP; RealIP 값을 저장하는 변수의 이름입니다
깡통!
여기 nginx 보고서를 추가한 후 시작합니다:
nginx: [emerg] unknown directive "set_real_ip_from" in /home/lnidmp/nginx/conf/nginx.conf:26
그래서 realip 모듈을 추가하고 nginx를 다시 컴파일합니다
1, CD /usr/local/nginx-1.6.3 2, ./configure --prefix=/usr/cmcc/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module 3, 제작 및 설치
팁:
1. set_real_ip_from 신뢰할 수 있는 사전 프록시로부터 얻은 실제 사용자 IP를 의미합니다
2. real_ip_header는 이전 프록시 전송의 사용자 IP를 의미하며, 수신된 메시지의 HTTP 부분을 얻습니다
3. real_ip_recursive 사용자 IP를 얻을 때까지 재귀적으로 제외할지 여부 (기본값은 꺼짐)
먼저, 기본적으로 X-Real-IP인 http 헤더 이름을 지정real_ip_header.
(1) IP가 1개라면, 발신자의 IP가 set_real_ip_from에서 지정한 신뢰 IP 목록에 있는지 확인합니다. 신뢰를 받는다면, 이 X-Real-IP의 IP 값이 이전 에이전트가 알려준 사용자의 실제 IP 값으로 인식하여 이 값을 자신의 $remote_addr 변수에 할당합니다; 신뢰하지 않으면 처리되지 않고, $remote_addr은 여전히 발신자의 IP 주소입니다.
(2) 예를 들어 X-Real-Ip에 여러 IP 값이 있을 경우, 이전 프록시는 다음과 같이 설정됩니다: proxy_set_header X-Real-Ip $proxy_add_x_forwarded_for;
결과는 IP 연속이기 때문에 real_ip_recursive의 가치가 지금 매우 중요합니다. nginx는 set_real_ip_from 신뢰 리스트의 IP를 오른쪽 순서에서 왼쪽으로 비교합니다. real_ip_recursive이 어긋나면 가장 오른쪽 IP가 신뢰할 수 있는 IP임이 확인되면, 다음 IP(오른쪽에서 두 번째)가 사용자의 실제 IP라고 생각됩니다. real_ip_recursive가 켜져 있으면 신뢰하지 않는 IP를 찾을 때까지 오른쪽에서 왼쪽으로 비교됩니다. 그 다음 IP 값을 $remote_addr에도 복사하세요.
리소스:
https://help.aliyun.com/document_detail/54007.html
https://help.aliyun.com/knowledge_detail/55198.html
https://www.linux178.com/web/nginx-get-realip.html
|