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

인듯,