prosource

$_SERVER["REMOTE_ADDR"]는 방문자 IP가 아닌 서버 IP를 제공합니다.

probook 2023. 7. 27. 22:06
반응형

$_SERVER["REMOTE_ADDR"]는 방문자 IP가 아닌 서버 IP를 제공합니다.

방문자의 IP 주소를 추적하려고 합니다.사용 시$_SERVER["REMOTE_ADDR"]나는 방문자의 IP 주소가 아닌 서버의 IP 주소를 받습니다.여러 위치에 있는 여러 대의 컴퓨터에서 이를 시도해 보았더니 모두 똑같은 IP가 나왔습니다.이것에 영향을 미칠 수 있는 PHP/서버 설정이 있습니까?

$_SERVER["REMOTE_ADDR"]를 사용할 때 방문자의 IP 주소가 아닌 서버의 IP 주소를 얻습니다.

그러면 구성이 잘못되었거나 이상합니다.

  • 일종의 역방향 프록시를 사용하고 있습니까?그럴 경우, @simshaun의 제안이 효과가 있을지도 모릅니다.

  • 당신의 웹 서버 구성에 특이한 점이 있습니까?

  • 당신이 사용하고 있는 PHP 코드를 보여줄 수 있습니까?

  • 당신은 그 주소가 어떻게 생겼는지 보여주세요.로컬 주소입니까, 아니면 인터넷 주소입니까?

$_SERVER['REMOTE_ADDR']요청이 웹 서버로 전송된 IP 주소를 제공합니다.이것은 일반적으로 방문자의 주소이지만, 당신의 경우, 요청을 가로채는 웹 서버 바로 앞에 일종의 프록시가 있는 것처럼 들립니다. 따라서 웹 서버에는 요청이 여기서 발생하는 것처럼 보입니다.

필요한 헤더에 IP 주소가 설정되어 있지 않은지 더 이상 확인하지 않습니다.다음을 수행하여 전체 서버 변수를 검사하고 어떤 변수가 사용자의 경우에 적합한지 확인합니다.

print_r($_SERVER);

교체:

$_SERVER["REMOTE_ADDR"];

포함:

$_SERVER["HTTP_X_REAL_IP"];

나를 위해 일했습니다.

if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
  $IP = $_SERVER['HTTP_CLIENT_IP'];
} else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  $IP = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
  $IP = $_SERVER['REMOTE_ADDR']; 
}

사용해 보세요.

$_SERVER['HTTP_CF_CONNECTING_IP'];

대신에

$_SERVER["REMOTE_ADDR"];

Cloudflare를 사용하는 경우 이 주소는 항상 서비스를 제공하는 노드의 Cloudflare IP 주소입니다.

이 경우 실제 IP 주소는 에서 가져옵니다.$_SERVER['HTTP_FORWARDED_FOR']다른 답변에 설명된 대로 입력합니다.

사이트가 클라우드 플레어 뒤에 있는 경우 클라우드 플레어 자체에서 제공하는 다른 헤더를 사용할 수 있습니다.

$_SERVER['HTTP_CF_CONNECTING_IP']

또는 Laravel을 사용하는 경우

$request->server('HTTP_CF_CONNECTING_IP');

자세한 내용은 여기를 참조하십시오.

Laravel / PHP에서 Cloudflare 뒤에 있는 실제 클라이언트 IP를 가져오는 방법

#158 7.x 단축 조건 구문.

<?php
$ip = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : (isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']);
echo "The user IP Address is - ". $ip;
?>

https://www.delftstack.com/howto/php/php-get-user-ip/ 에서

원격 사용Apache 서버의 IP 모듈

a2enmod remoteip

Apache 다시 시작: /etc/init.d/apache2 다시 시작

언급URL : https://stackoverflow.com/questions/4262081/serverremote-addr-gives-server-ip-rather-than-visitor-ip

반응형