Nginx에서 X-Real-IP와 X-Forwarded-For를 모두 활성화합니다.

Nginx에서 X-Real-IP와 X-Forwarded-For를 모두 활성화합니다.

Nginx에서 X-Real-IP와 X-Forwarded-For를 모두 활성화하려면 어떻게 해야 합니까? 현재 Docker 네트워크에서 실제 IP를 얻으려면 다음이 필요합니다.

set_real_ip_from  172.18.0.0/32;
real_ip_header    X-Real-IP;
real_ip_recursive on;

또한 Cloudflare의 실제 IP를 Docker 컨테이너에도 전달하고 싶습니다. 동일한 구성에서 X-Real-IP와 X-Forwarded-For를 모두 사용하려면 어떻게 해야 합니까? X-Real-IP에 대해 하나의 IP 세트와 X-Forwarded-For에 대해 하나의 IP 세트를 사용합니까?

답변1

CloudFlare 뒤에서 실제 IP를 얻으려는 경우 대신 자체 헤더인 CF-Connecting-IP를 사용해야 합니다. 다른 헤더를 직접 생성하지 않은 경우 클라이언트에 의해 위조될 수 있으므로 무시해야 합니다.

real_ip_header CF-Connecting-IP;

답변2

  1. 노력하다지도핑을 보내보세요(작동하지 않음):

    map $remote_addr $real_header {
      default X-Real-IP;
      172.18.0.1 X-Forwarded-For;
    }
    
    server {
      real_ip_header $real_header;
    }
    
  2. 해당 스트림을 다른 서버로 분리해 보십시오. 수동으로 real_ip_header를 서버 또는 위치별로 설정할 수 있으므로 다음을 수행할 수 있습니다.

    server {
      listen :8080;
      real_ip_header X-Real-IP;
      include "/all/other/stuff.conf";
    }
    
    server {
      listen :8081;
      real_ip_header X-Forwarded-For;
      include "/all/other/stuff.conf";
    }
    
  3. 위치를 가지고 놀려면 위치를 구분하기 위한 더 많은 구문 설탕이 포함되며 아마도 if를 사용해야 할 것입니다.사악한. 하지만 두 내부 위치 사이를 수동으로 내부 다시 작성하여 두 개의 내부 위치를 만드는 것이 가능하다고 생각합니다. 이는 사용자에게 완전히 숨겨집니다.

  4. Lua를 사용하는 것도 도움이 될 것 같지만 먼저 이전 제안을 시도해 보세요.

관련 정보