treafik 환경에서 laravel-multidomain 사용할때 발생되는 SERVER_NAME 영역
Updated on
https://github.com/gecche/laravel-multidomain
이번에 작업하는건 sub domain 이 굉장히 많다, sub domain 마다 연결되는 SQL가 달라야된다… 그렇기 때문에 위 패키지를 사용했는데, 여기서 발생한 문제점이 있었다.
SERVER_NAME 을 nginx의 site.conf 에서 받아오는데, 난 treafik 를 사용하다보니,
server_name default;
로 설정하고 운영하고 있다…
물론, 각 서브도메인마다, 각기 다른 nginx의 site.conf 를 설정해주어도 될거 같긴하지만,, 어차피 treafik 에서 이미 분기해서 보내주지 않는가 ?
그래서, 해결할 수 있는 방법은 아래와 같다.
\vendor\gecche\laravel-multidomain\src\Foundation\DomainDetector.php protected function detectWebDomain() { //return filter_input(INPUT_SERVER,'SERVER_NAME'); return Arr::get($_SERVER,'SERVER_NAME'); }
protected function detectWebDomain() { //return filter_input(INPUT_SERVER,'SERVER_NAME'); // return Arr::get($_SERVER,'SERVER_NAME'); return Arr::get($_SERVER,'HTTP_HOST'); }
위 내용으로 바꿔주면 된다.
return Arr::get($_SERVER,'HTTP_HOST'); return Arr::get($_SERVER,'HTTP_X_FORWARDED_HOST');
실제로 treafik + cloudflare 에서 사용하는거라면 무엇을 해도 상관은 없는데,
난 windows 에서는 HTTP_HOST로 사용해야하니깐, 개발환경은 HTTP_HOST로 맞춰두고, 운영서버는 HTTP_X_FORWARDED_HOST 로 설정하면 될듯 싶다.
여기서 추가적으로 traefik 으로 했을때의 외부아이피를 받을때에는
X-REAL-IP
여기서 추가적으로 cloudflare 로 했을때의 외부아이피를 받을때에는
HTTP_CF_CONNECTING_IP
인듯,