IP 조회가 CDN의 X-Forwarded-For를 가져오는 중

디스코스 커뮤니티 여러분 안녕하세요!

IP Lookup이 X-Forwarded-For 헤더의 마지막 IP를 가져오는 것으로 이해하고 있는데 맞을까요? CloudFront가 마지막에 자체 IP를 추가하는 것 같습니다.

스팸을 방지하기 위해 클라이언트 IP를 얻고자 하는데, nginx를 어떻게 수정해야 X-Forwarded-For 헤더의 마지막 IP를 제거할 수 있을까요?

도움이나 조언을 주실 수 있을까요?

감사합니다

혹시 다른 분들도 이런 상황에 대한 우회 방법이 있는지 궁금해서 여쭤봅니다.

안녕하세요, 이거 확인해 보셨나요?

Run other websites on the same machine as Discourse 을 참고해 보세요.

클라우드플레어 프록시를 켜면서 이 문제를 겪었습니다.

Nginx 설정을 변경하여 해결했습니다. 모든 프록시 IP 주소를 찾아야 하며, http 섹션에서 각각에 대해 다음을 설정해야 합니다:

set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
...

이제 클라우드플레어가 전달하는 헤더에서 실제 IP를 설정할 수 있습니다:

real_ip_header CF-Connecting-IP;

프록시 IP 주소가 변경될 수 있으므로, 이를 자동으로 가져와서 업데이트하는 방식을 자동화해야 합니다.

그 후 다음 명령어로 nginx를 다시 로드/재시작합니다:

sv nginx reload 또는 sv nginx restart

아, 이 게시물을 더 일찍 봤으면 좋았을 텐데! 오늘 이미 존재하는 것을 다시 만들기 위해 한 시간을 보냈습니다: X-Forwarded-For 프록시 태그가 Discourse에서 인식되지 않나요?:

사이트를 다시 빌드할 때 Cloudflare에서 IP 목록을 자동으로 업데이트해 주기 때문에 내장된 솔루션으로 전환하는 것을 추천합니다.

재빌드에 의존하기보다는 cron 작업을 설정하여 정기적으로 확인하는 것이 더 나은 선택일 수 있습니다.

자주 변경되는 것 같지 않네요: https://community.cloudflare.com/t/how-often-do-cloudflare-ips-change/9802/7

2년은 제가 생각했던 것보다 훨씬 더 자주 발생하는 주기입니다.

다만, 해당 확인 작업이 매우 간단하므로 하루에 한 번 수행하는 데에는 전혀 문제가 없습니다. 새 IP 범위가 활성화되기 며칠 전에 목록이 업데이트되길 바랍니다.