2016년 4월 14일 목요일

클라우드플레어 -04 (헤더)



클라우드 플레어가 다 좋은데. 조사를 해봤는데 nginx 기반인 프록시로 만들어져있다고 한다.




처음에 Unity3D를 이용한 리듬게임을 만드려고 하였는데 리퀘스트 자체를 클라우드플레어로 거쳐서 통신을 하려고 했다. 그런데 클라우드플레어를 거쳐서 하려니 되게 이런저런 어려움이 있었다.




전 글에 언급했던것 처럼 구조적인 문제가 가장 큰 원인이었다 .






리얼아이피를 받아올수가 없다. 그래서 특별한 조취를 취해주어야 하는데 일단

PHP : http://stackoverflow.com/questions/14985518/cloudflare-and-logging-visitor-ip-addresses-via-in-php

여기의 글을 참고했다.

$_SERVER["HTTP_CF_CONNECTING_IP"] real visitor ip address, this is what you want

$_SERVER["HTTP_CF_IPCOUNTRY"] country of visitor


아이피 받는 REMOTE_ADDR 이나 다른 변수값을 위의 헤더로 변경해주면 되고

------------------------------
asp : http://pcrelated.net/index.php/asp-net-find-a-connecting-users-ip-using-cloudflare를 참고해보면

string userIP = Request.Headers["CF-CONNECTING-IP"].ToString();

--------------------------------
java :

String getip = request.getHeader("HTTP_X_FORWARDED_FOR");
 if (getip == null) getip = request.getRemoteAddr();
---------------------------------------------

자바에서는 이렇게 처리를 하면 된다 ... 센스있게 넘어오는 값이 널값이면 다른 헤더로 한번 더 대조를 하면 관리하는데 큰 문제는 없을것이다... 자바 같은 경우에는 필자가 실제로 사용하는 코드를 복붙했다.

실시간 통신을 하려다가 결국에는 중간에 미들웨어를 낀 다음에 각 클라이언트마다 처리결과를 뿌려주는 비동기방식 넷플레이를 선택을 했다. 아이피는 죽어도 가리고 싶으니깐 ... ( 필자가 시큐어코딩은 약하다 )

내부 방화벽은 사용하기 어려우니 이런 경우에는 리다이렉트를 통해서 국가및 아이피에 대해서 접속을 제한하는 수동적인 방법을 사용해야한다. 필자는 이렇게 사용하고 있음...

nginx로 운영을 하거나 아파치 mod_cloudflare 설치해주면 tcpdump에서 클라우드플레어 값이 잡힌다고 하는데 이건 알아서 찾아보는게 좋을것 같다. 필자도 주워들은 것이여서 ... 실제로 경험은 하지 못했지만 리눅스로 운영을 한다면 꼭 알아봐야할것 같다. 만약에 진전이 있으면 또 추가적으로 글을 올리겠다

댓글 없음:

댓글 쓰기