[PHP, Nginx] 사용자 정의 헤더 넘겨 받기
카테고리: PHP
문제 상황
Apache였다면, apache_request_headers() 함수를 사용하여 헤더들을 넘겨 받아서 사용하겠지만 Nginx에서는 해당 함수를 사용할 수 없기 때문에 사용 방법이 조금 다르다.
해결 방안
결론 부터 말하자면, $_SERVER를 이용해서 넘겨 받을 수 있다.
아래와 같이 사용자 정의 헤더(CURL-REAL-IP)를 전송하려고 한다.
※ 헤더는 -만 사용해야하고 불가피하게 _을 사용하려고 하면 underscores_in_headers on; 옵션을 추가해줘야한다.
Nginx를 통과하여 php에 도착하면 $_SERVER에 HTTP_라는 접두사가 붙은채로 아래와 같이 도착해있다.
소스 코드
서버단 php에서 사용할 때는 다음과 같이 사용한다.
<?php
$client_ip = $_SERVER['HTTP_X_REAL_IP'];
if(!empty($_SERVER['HTTP_CURL_REAL_IP'])){
$client_ip = $_SERVER['HTTP_CURL_REAL_IP'];
}
echo $client_ip;
?>