WP Super Cache 플러그인을 사용하고자 한다면, 전에 만들었던 고유주소 사용을 위한 설정 파일을 수정해야 한다. 만약 WP Super Cache 플러그인을 사용하지 않는다면 이 과정은 넘어가도 무관하다.

$ sudo su –

password:

매번 명령어를 넣을 때마다 앞에 sudo를 붙이는게 귀찮다면 위와 같이 입력하여 root 계정으로 전환한 후 작업하면 편하다. 만약 sudo 붙이고 비밀번호 입력하는 과정이 전혀 불편하지 않다면, 위 과정은 넘어가도 된다. 대신 모든 명령어 앞에 sudo 를 붙여야 한다.

vi /usr/local/etc/nginx/conf.d/########-####-####-####-############/user.conf.custom

### 으로 되어 있는 부분이 기억이 나지 않는다면 아래와 같이 다시 확인할 수 있다.

$ more /etc/nginx/app.d/server.webstation-vhost.conf

cat 명령어로 파일 내용을 확인해도 되겠지만, 내용이 한 페이지를 넘어가는 경우 cat은 적합하지 않다. more 명령어를 사용하면 내용이 한 화면을 넘어가는 경우 한 화면 씩 볼 수가 있기 때문에 매우 편리하다.

텍스트 파일을 보는 중에 사용할 수 있는 키
Return 한 줄 아래로
Space bar 한 페이지 아래로
b 한 페이지 위로
v 현재 파일 vi 로 편집하기
:f 파일명과 화면 마지막 줄번호 보이기
q 종료
h 도움말 보기

more 명령어에 대해 더 알아보고 싶다면, 도움말 혹은 아래 링크를 참고하면 된다.
레퍼런스: more command in Linux with Examples
https://www.geeksforgeeks.org/more-command-in-linux-with-examples/

만약 줄번호도 같이 보고 싶다면, 아래와 같이 cat 과 함께 쓰면 된다. -n 옵션은 비어있는 줄에도 번호를 메기는 것이고, -f 옵션은 비어있는 줄에는 번호를 메기지 않는 옵션이다.

$ cat -n /etc/nginx/app.d/server.webstation-vhost.conf | more
$ cat -f /etc/nginx/app.d/server.webstation-vhost.conf | more

파일 보기를 했다면, 다음과 같은 내용을 찾아야 한다. 가상호스트를 여러개 만들어 놓았다면 server { … } 가 여러개 있을텐데, 우선 현재 설정하고자 하는 서버이름을 찾는다. 그 후 중괄호로 같이 묶여 있는 내용 중에서 경로를 확인할 수 있다.

server {
    listen      80;
    listen      [::]:80;
    listen      443 ssl http2;
    listen      [::]:443 ssl http2;
    server_name intellify.me;

    include /usr/local/etc/nginx/conf.d/########-####-####-####-############/user.conf*;
}

여기서 server.webstation-vhost.conf 파일을 직접 수정하지 않는 이유는, 시놀로지 NAS가 재부팅되면 설정파일이 수정 전으로 복구 되기 때문이다. 때문에 시놀로지에서는 NAS 재시작 후에도 유지될 수 있는 사용자 설정 파일을 위한 공간을 제공하고 있다. 자, 이제 경로를 알았으니 파일을 수정해 보자.

vi /usr/local/etc/nginx/conf.d/########-####-####-####-############/user.conf.custom

고유주소 사용을 위해 만들어 놓은 내용이 보인다.

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

dd 명령어로 한 줄 씩 내용을 지우거나 dG 명령어로 한 번에 싹 지우고, i 를 눌러 입력모드로 전환한 뒤 아래 내용을 붙여넣는다.

# WP Super Cache rules
set $cache_uri $request_uri;

# POST requests and urls with a query string should always go to PHP
if ($request_method = POST) {
set $cache_uri ‘null cache’;
}

if ($query_string != “”) {
set $cache_uri ‘null cache’;
}

# Don’t cache uris containing the following segments
if ($request_uri ~* “(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)”) {
set $cache_uri ‘null cache’;
}

# Don’t use the cache for logged in users or recent commenters
if ($http_cookie ~* “comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in”) {
set $cache_uri ‘null cache’;
}

# Use cached or actual file if they exists, otherwise pass request to WordPress
location / {
try_files /wp-content/cache/supercache/$http_host/$cache_uri/index-https.html $uri $uri/ /index.php?$args;
}

내 경우, Web Station의 가상 호스트 설정에서 HSTS (HTTP Strict Transport Security)를 활성화 해 두었다. 따라서 접속 시 HTTPS 만 사용할 수 있다. 웹사이트 방문자가 HTTPS로 접속(https://로 시작하는 주소)하는 경우 WP Super Cache 에 의해 생성되는 캐시 파일명은 index-https.html 이다. 만약 방문자가 HTTP로 접속(http://로 시작하는 주소)하는 경우에는 index.html 이라는 캐시 파일이 생성된다. 따라서 HTTPS를 사용하지 않는다면 location 부분에서 index-https.html을 index.html 로 수정해야 한다.
수정이 끝났으면, esc 키를 누르고 :wq 명령어를 통해 저장 후 종료한다.
Nginx 웹서버 설정을 수정했으니, 수정 내용을 적용시키기 위해서는 Nginx 서버를 재시작을 해줘야한다.

$ synoservice –restart nginx

레퍼런스: Nginx – Wordpress.org
https://wordpress.org/support/article/nginx/#wp-super-cache-rules

(서버 이전 준비 중이기 때문에 생각 나는대로 막 써놓는 중. 서버 이전 후 워드프레스 테마도 바꿀 예정이라 추후 내용도 다듬고 테마에 맞게 수정할 예정)

Leave a Reply

Your email address will not be published. Required fields are marked *