맥미니에 macOS Server를 설치해서 웹 서비스 및 개발 서버로 사용한다. Apache Virtual Host 설정은 나의 블로그 도메인을 Docker로 서비스하는 Ghost로 연결할 때 적용하였다.

나의 블로그는 서비스하는데 Markdow으로 작성 가능한 Ghost를 이용하여 구축하였다. Wordpress, Ghost, Hugo 등 다양한 플랫폼 중 Ghost를 선택한 이유는 Hugo가 매우 좋았지만 웹 상에서 글을 쓰고 관리하기에 불편하여 결국 Ghost로 돌아왔다. Wordpress는 너무 복잡하고 Markdown으로 쓰기에는 아쉽다.

Ghost를 Docker를 이용하여 설치하면 기본적으로 http://localhost:2368 로 주소가 할당된다. 블로그 도메인 https://blog.lulab.net 와 연결하기 위해 Apache Web Server의 Virtual Host를 이용하여 ProxyPass를 설정하였다.

macOS Server의 Apache Web Server에서 Virtual Host를 설정하는 방법은 구글에 많이 검색되지만 정확히 되는 방법이 없었다. 특히 설정 위치 등이 잘못된 혹은 과거의 버전으로 된 경우가 많아서 다시 정리하였다.

macOS Server의 Apache Virtual Host 설정

Virtual Host의 ProxyPass를 설정하면 앞으로 다수의 서비스를 제공할 때 원하는 서브 도메인, 혹은 여러 도메인들을 연결하여 사용 가능하다.

/Library/Server/Web/Config/apache2/sites*.conf

위 경로에 macOS Server Apache Web Server 설정이 저장된다. 나의 경우에는 macOS Server의 웹사이트에서 서비스를 추가하고 설정을 수정하여 사용한다. 다음은 https://blog.lulab.net 의 연결 설정이다.

$ sudo vi /Library/Server/Web/Config/apache2/sites/0000_127.0.0.1_34543_blog.lulab.net.conf

아래와 같이 Proxy에 대한 설정을 추가하고 저장한다.

<VirtualHost 127.0.0.1:34543>
    ServerName https://blog.lulab.net:443
    
    // SSL 설정이 필요한 경우 작성

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://localhost:2368/
    ProxyPassReverse / http://localhost:2368/
    <Location />
        Order allow,deny
        Allow from all
    </Location>
</VirtualHost>

macOS Server 에서 웹 서비스를 중지했다가 다시 시작하거나 다음의 명령어로 Apache Web Server를 재시작하여 설정을 적용한다.

$ sudo apachectl restart

재시작을 하면 해당 도메인으로 서비스 되는 블로그를 확인할 수 있다. 기분 좋다 :)

Apache Vitual Host

Apache의 Virtual host는 위와 같이 간단한 설정으로 적용한다.

본 글은 macOS Server 기준으로 설명하였지만 Apache Server를 사용하면 위의 설정들이 동일하다. 단순히 Apache Server의 설치 경로 혹은 설정의 경로들이 다를 뿐이니 OS와 무관하게 참고 가능하다.

Proxy를 이용한 연결 설정은 개인 서버에서 다양한 도메인으로 서비스를 제공할 때 반드시 필요하다. 한정된 서버에서 여러 개의 서비스를 동시에 제공하는 경우 유용한 방법이다. 나의 경우에도 맥미니를 서버로 개인 프로젝트 및 블로그를 제공하는데 Proxy가 가장 편리했다.