IT_Synology_logo

Synology에서 Nginx 설정값 유지하기


기존의 웹사이트를 운영할때와 지금 현재 운영하는 이 블로그의 WordPress 도 구축하려했을때 부터 Nginx 의 설정이 항상 골치거리였습니다.
Apache 는 .htaccess 설정으로만 되던것들이 Nginx 에서는 안되니 말이죠.
Synology 공식 홈페이지의 지식 기반에서도 .htaccess 에 대한 언급은 있어도 Nginx 의 설정파일(*.conf)에 대해서는 언급이 없습니다.


1. 기존에 쓰던 방법


cp -v /volume1/******/server.webstation-vhost.conf /etc/nginx/app.d/
nginx -s reload

기존에 쓰던 방법은 Rebooting 및 00시가 지나면 Nginx 의 설정 값이 자동으로 초기화가 되므로 10분에 한번씩 가상호스트의 파일인 server.webstation-vhost.conf 를 지속적으로 Scheduling 하여 밀어 넣어주면 되지 않을까? 라는 생각으로 해봤습니다.

하지만 이건 생각보다 위험한 짓이라고 생각이 들었죠.

일단 크게 2가지의 문제점이 생긴다는 것 입니다.



-> Nginx 의 설정 값이 계속 변경 된다는 것

Synology 의 DSM 은 설정값들을 일정 시간 기준으로 계속 원상복구 하려고 합니다.
그래서 위와 같은 논리로 Scheduling 을 통해 계속 밀어 넣어주면 되지 않을까? 라고 생각이 들게 되었던거죠.
하지만 conf 의 파일은 계속 덮어 씌어준다는 것은 혹시나 작업 시 설정값이 꼬이거나 System 이 Upgrade 되었을때 예상치 못한 일이 발생할 수 있다는 것입니다.



-> Synology 기본 무료 SSL 인증서인 Let’s Encrypt 인증서를 지속적으로 사용하기가 번거롭다는 점

Synology DSM 6.0 버전 이상이 되면서 Let’s Encrypt 무료 SSL 인증서를 발급 할 수 있게 됩니다.
그런데 이것은 3개월의 기간동안 유지가 되며 3개월이 되면 자동적으로 갱신이 된다는 점이죠.
새로운 인증서가 들어오게 되는데 이것을 다시 새롭게 적용 시켜줘야 한다는 겁니다.
관리자로써 이런일은 매우 귀찮고 번거롭기만 합니다.


2. 모든 것을 쉽게 해결할 수 있는 방안



-> 가상호스트 설정


* 현재 Archiving 되어있는 Rhymix 의 가상호스트


가상호스트를 만들어줍니다.
가상호스트는 Synology Web Station 에 있습니다.
CNAME 을 이용하여 만드는 웹호스트는 가상호스트가 굉장히 좋은 기능인 것을 깨달을 수 있습니다.



-> 가상호스트를 정상적으로 생성하였다면 SCP 로 가상호스트 파일을 찾기


* SCP로 바라보는 가상호스트의 파일 경로


이 많은 파일 중 이름만 봐도 대충 감이 오지 않나요?
/etc/nginx/app.d/server.webstation-vhost.conf 가 가상 호스트의 파일입니다.

해당 파일을 찾았다면 편집기로 열어봅니다.
ssh 에서는 vi 나 nano 로, Windows 에서는 메모장이나 Notepad++ 같은 툴로 보면 좋습니다.

server {
 
    listen      80;
    listen      [::]:80;
 
    listen      443 ssl http2;
    listen      [::]:443 ssl http2;
 
    # 가상호스트 도메인 이름
    server_name archive.formellow.com;
 
 
    ... 중략 ...
 
 
    # 가상호스트에 설정할 수 있는 파일
    include /usr/local/etc/nginx/conf.d/f9c6e610-5ffb-4dd7-9dc6-da8192d6a0c0/user.conf*;
 
}

여기서 기억해야 할 곳은 2곳입니다.
도메인의 이름 부분과 가상호스트를 설정할 수 있는 파일(user.conf*)의 위치에요.



-> user.conf* 파일을 작성 후 Nginx 재시작 하기

user.conf*에는 server { ... }이나 location { ... }rewrite 같은 것들이 들어갑니다.


* SCP로 바라본 가상호스트 Nginx 설정 파일


Archiving 되어있는 웹사이트는 Rhymix 를 사용하니 Rhymix 의 설정 파일을 위와 같이 넣어 주었습니다.
Rhymix 의 Nginx 설정 파일은 다음과 같은 링크에 있습니다.

https://github.com/rhymix/rhymix/blob/master/common/manual/server_config/rhymix-nginx.conf

또한 WordPress 의 기본 Rewrite 설정 값을 다음과 같이 적어 드립니다.

location / {
           try_files $uri $uri/ /index.php?$args;
}

이렇게 전부 넣어주었다면 다음과 같이 적어서 Nginx 를 Reload 및 Service Restart 시켜주면 됩니다.

# Nginx Reload
nginx -s reload

# Nginx Service Restart
synoservice --restart nginx

이렇게 넣어주었다면 앞으로 Rebooting 을 하더라고 정상적으로 적용이 될 것 입니다.

가상호스트로 작동하는 CMS 들이나 기타 다른 웹 관련 호스트는 설정이 비슷하니 동일하게 작업해준다면 정상으로 작동 할 것입니다.