OSX Server에 기본적으로 Apache 웹서버를 제공하기 때문에 처음에는 이전 글 macOS Server의 Apache Virtual Host 설정 방법과 같이 Apache 웹서버의 Virtual Host를 이용하여 블로그 및 여러 서비스들을 Proxy로 구성하여 사용하고 있습니다.

하지만 가볍고 빠르다는 Nginx를 써보고 싶은 마음으로 Nginx를 이용한 설정 방법을 확인하였습니다. Apache 웹서버, nginx 둘 다 설정을 해본 느낌으로는 Nginx가 더 깔끔합니다. 성능의 차이는 개인 서버로 특별히 느낄 수 없지만 Osx Server 구매 내역이 아까워서 일단은 Apache를 사용할 예정입니다. 하지만 Linux로 별도 서버를 구축한다면 Nginx가 좀 더 깔끔해서 사용할 것 같습니다.

(2019-05-26 코멘트 추가) OSX Server 업데이트 하며 필요한 기능들이 다 사라짐에 따라 결제 내역은 버렸다 생각하고 현재 Nginx로 서버를 운영 중입니다.

OSX에 Nginx 설치 (Brew 이용)

Apache 웹서버의 경우, OSX에 자동으로 설치되어 있어서 특별한 설치는 없으나 Nginx는 설치가 필요합니다. 이럴 때는 멋진 맥용 패키지 관리툴인 Homebrew를 이용합니다.

$ brew install nginx

위의 명령 한 줄이면 깔끔하게 Nginx가 설치되고 다음의 명령어로 nginx를 시작합니다.

$ nginx


위와 같이 nginx로 실행하면 잘 수행되지만 80 포트를 이용할 수 없습니다. 또한 정상적으로 동작하는 듯 하지만 일부 서비스에서 인코딩 혹은 서버와 통신 오류가 빈번히 발생합니다. 그래서 MacOSX에서 Nginx의 80번 포트로 웹서비스를 안정적으로 이용하려면 sudo nginx와 같이 관리 권한을 가지고 실행해야 합니다.

Nginx에 Proxy 설정

Homebrew를 이용한 Nginx는 다음의 경로에 설치됩니다.

/usr/local/etc/nginx

이전 Apache 웹서버와 유사하게 http://blog.lulab.net을 위한 Proxy 위해 다음과 같이 설정 파일을 작성합니다.

$ vim /usr/local/etc/nginx/servers/blog.lulab.net.conf
server {
    listen       80;
    server_name  blog.lulab.net;

    location / {
        return 301 https://blog.lulab.net$request_uri;
    }
}

server {
    listen       443 ssl;
    server_name  blog.lulab.net;

    ssl_prefer_server_ciphers on;
    ssl_certificate     {{인증서 파일};
    ssl_certificate_key {{인증서 키};
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;

    location / {
        client_max_body_size 100m;
        proxy_set_header   X-Forwarded-Host   $host;
        proxy_set_header   X-Forwarded-Server $host;
        proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_pass         http://127.0.0.1:2368;
    }
}

위의 설정은 blog.lulab.net의 server_name으로 80포트로 접근하는 경우, 443으로 리다이렉트를 시킵니다. 그리고 인증서를 이용하여 안정적으로 연결이 된 경우 http://127.0.0.1:2368 의 포트로 프록시 연결을 제공하는 설정입니다. 설정 파일을 적용하기 위해서는 다음의 명령어를 이용합니다.

$ sudo nginx -s reload

Nginx는 좋은 느낌

개인 서버 운영 시에는 대부분 1대의 서버에 여러가지 서비스를 올리게 되는데 이 때 Proxy를 이용하면 매우 유용합니다. 그리고 도메인도 1개밖에 없기 때문에 서브 도메인을 적극적으로 활용할 수 있습니다. Proxy는 이러한 요구를 완벽하게 만족시켜줍니다.

Apache 웹서버도 동일한 긴으을 제공하지만 Nginx는 문법이 간결하여 편리하고 좋은 느낌을 줍니다.