Nginx에서 AWS, Google Cloud LB 및 Cloudflare로부터 클라이언트 IP를 얻는 방법은 무엇입니까?

클라우드에서 웹 애플리케이션을 설정하는 것은 항상 재미있고 흥미진진합니다.

최근에 저는 Cloudflare 뒤에 있는 AWS에서 호스팅되는 koreantech.org 도구 도구를 출시했습니다.

AWS 애플리케이션 로드 밸런서와 Nginx를 웹 서버로 사용하고 있습니다. 생명을 만든 후 access.log를 확인해보니 모든 요청이 내부(로드 밸런서) IP에서 온 것으로 표시되어 있었습니다.

방문자 위치에 대한 웹 서버 로그를 분석하려는 경우에는 좋지 않습니다. 내가 누락되었거나 클라이언트 IP를 복원하기 위해 몇 가지 구성 변경을 수행해야 한다는 것을 깨달았습니다.

저와 같은 상황이신가요?

Nginx 액세스 로그에서 클라이언트 IP를 얻는 방법은 다음과 같습니다.

AWS 또는 Google Cloud LB에서 방문자 IP 가져오기

  • Nginx 웹 서버에 로그인
  • 설치된 경로로 이동합니다(기본 위치는 /etc/nginx).
  • nginx.conf 파일을 백업하십시오.
  • HTTP 블록 아래에 다음을 추가하십시오.
real_ip_header X-Forwarded-For;
set_real_ip_from 0.0.0.0/0;
  • Nginx를 다시 시작하면 access.log 파일에 방문자의 IP가 표시됩니다.

Cloudflare 뒤에 있는 경우 클라이언트의 IP 대신 Cloudflare의 IP가 표시되므로 아래 작업도 수행해야 합니다.

Cloudflare에서 클라이언트 IP 가져오기

Cloudflare는 훌륭한 CDN 및 보안 제공업체이며 저는 Cloudflare를 정말 좋아합니다. 저처럼 Cloudflare를 사용 중이고 웹 서버 로그에서 방문자 IP를 복원하고 싶다면 다음과 같이 할 수 있습니다.

Nginx 서버에 로그인했다고 가정합니다.

사이트 구성 파일을 백업하십시오(일반적으로 여기 – /etc/nginx/sites-available/yourdomain).

파일 시작 부분에 다음을 추가하십시오.

set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 199.27.128.0/21;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
real_ip_header CF-Connecting-IP;

참고: IP 목록의 유효성을 검사할 수 있습니다. 공식 페이지.

Nginx를 다시 시작하면 이제 클라이언트 IP가 표시됩니다. 이것은 저에게 도움이 되었으며 여러분도 그러기를 바랍니다.

다음으로 Cloudflare Workers를 사용하여 보안 헤더를 구현하는 방법을 알아보세요.

기사를 재미있게 읽으셨나요? 세계와 공유하는 것은 어떻습니까?

  CBS 올 액세스 구독을 취소하는 방법