nginx는 클라이언트의 실제 IP를 얻습니다.

nginx에서 클라이언트의 실제 IP를 얻는 방법에는 여러 가지가 있으며 일반적으로 사용되는 두 가지 방법은 다음과 같습니다.

  1. nginx의 access_log 모듈을 사용하여 요청 로그를 기록하고 로그에 클라이언트의 실제 IP 정보를 포함합니다. 예를 들어:

log_format mylog '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log mylog;

위의 구성에서 http_x_forwarded_for 필드를 사용하여 클라이언트의 실제 IP 주소를 얻습니다. 이 필드가 없거나 유효하지 않은 경우 remote_addr 필드를 사용하여 클라이언트 IP 주소를 얻습니다.

  1. nginx의 위치 블록에서 proxy_set_header 지시문을 설정하여 백엔드 서버에 전달해야 하는 HTTP 헤더 정보를 지정합니다. 그 중 X-Forwarded-For는 일반적으로 사용되는 HTTP 헤더 필드로 클라이언트의 실제 IP 주소를 나타내는 데 사용할 수 있습니다. 예를 들어:
location / {
    
    
    proxy_pass http://backend;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

위 구성에서 Nginx가 백엔드 서버에 대한 요청을 프록시할 때 클라이언트의 실제 IP 주소를 X-Forwarded-For 헤더에 추가한 다음 요청을 백엔드 서버로 전달합니다. 백엔드 서버는 X-Forwarded-For 필드를 구문 분석하여 클라이언트의 실제 IP 주소를 얻을 수 있습니다.

추천

출처blog.csdn.net/weixin_45000409/article/details/131051379