proxy 뒤의 tattertools

tattertools가 아파치의 mod_rewrite로 url을 처리하기 때문에, 메인 웹서버인 lighttpd에서 돌리기 힘듭니다. 그래서 현재 80포트의 lighttpd에서 처리를 받아서 82번 포트의 아파치로 연결을 포워딩하도록 lighttpd의 mod_proxy를 이용하여 서비스 중입니다.

하지만 tattertools의 로그를 보면 모든 접속자가 127.0.0,1로 표시되고, 트랙백 주소가 http://mix1009.net:82/trackback/46로 나오는 등 문제가 있습니다. 원래 트래백 주소 문제를 해결할려고 모든 php 문서를 편집해서 고쳤었는데, 접속주소 문제를 해결하면서 좀더 깔끔한 해결책이 나왔습니다.

일단, 아래 php파일을 이용해서 헤더정보를 확인했습니다.

[CODE type=php]<pre>
<?
  print_r($_SERVER);
?>
</pre>[/HTML][/CODE]

REMOTE_ADDR은 127.0.0.1, HTTP_X_FORWARDED_FOR 라는 곳에 원래 아이피 주소가 나왔습니다. 두 단어로 구글을 통해서 검색을 해서 얻은 결론은, REMOTE_ADDR가 127.0.0.1로 세팅되고 HTTP_X_FORWARDED_FOR가 세팅되어 있을때 REMOTE_ADDR를 바꿔주면 해결이 된다는 거였습니다.

tattertools의 모든 php에서(?) include하는 config.php에 마지막에 다음을 추가해줬더니 아주 잘 동작합니다:

[CODE type=php]if ($_SERVER[‘REMOTE_ADDR’] == ‘127.0.0.1’ && $_SERVER[‘HTTP_X_FORWARDED_FOR’]) {
  $_SERVER[‘REMOTE_ADDR’] = $_SERVER[‘HTTP_X_FORWARDED_FOR’];
  $_SERVER[‘SERVER_PORT’] = ’80’;
  unset($service[‘port’]);
}[/HTML][/CODE]

$service[‘port’]는 config.php가 인클루드되기 전에 $_SERVER[‘SERVER_PORT’]가 80번이나 443번이 아니면 세팅되어, 트래백 주소에 포트가 붙게하는 역할을 합니다. 따라서 127.0.0.1에서 proxy 요청이 왔을때는 $server[‘port’] 변수를 날려줍니다. 그러면 트랙백 주소에 포트가 안붙고 깔끔하게 나옵니다.

Leave a Reply

Your email address will not be published.