nginx WP Super Cache 적용 하기 403 오류 해결

nginx WP Super Cache 적용 하기 403 오류 해결

Apache 서버를 이용할 때와는 정말 엄청 차이가 나더군요

Nginx 가 Apache 보다 성능이 좋다는 인터넷 글을 보고 서버를 Nginx 로 새롭게 설치 했습니다.

Nginx 를 설치 하고 보니 Apache 보다 빠르다는 걸 조금 느끼겠던데 실제 서버에 접속 하는 사용자는 큰 차이를 못 느끼는 것 같았습니다.

그러던 중 ssl 보안 서버를 적용하고 속도 향상을 위해 캐쉬 플러그인을 설치 했는데요

가장 먼저 설치 한 것이  W3 Total Cache 였습니다.

W3 Total Cache 설치는 의외로 간단하게 했습니다.

플러그인 설치 하고 /etc/nginx/conf.d/ 폴더에 conf 파일에

 include /home/myroot/www/home1/nginx.conf;

이렇게 링크만 걸어 걸고 서버를 재 시작 하니 잘 적용 되었습니다.

그런데 어딘가 모르게 W3 Total Cache 자체가 무겁다는 생각이 들었습니다.

제가 설정을 잘 못해서 그럴 수도 있겠지만 여기저기 에서 페이지 속도를 체크 해봐도 마음 들지 않더군요..


그러던 중 W3 Total Cache 를 좀더 설정이 간단한 WP Super Cache 로 변경하기로 결정 하고

WP Super Cache 플러그인을 설치 했습니다.

제 생각이 '음 이것도 플러그인 설치 하고 conf 파일에서 링크 잡아 주면 되겠지..' 하고 생각하고 적용해봤습니다.

그런데 W3 Total Cache 는 자동으로 루트에 nginx.conf 파일을 만들어 주던데 WP Super Cache 플러그인은 아무리 찾아도 캐시를 적용할 conf 파일이 없더군요..

이때 부터 고난에 연속..

구글에서 검색을 해보니

'Nginx 서버에서는 conf 파일을 직접 만들어서 올려야 된다'

머 이런 이야기 였습니다.

해외 에서도 Nginx 에서 WP Super Cache 가 제대로 적용이 되지 않아 문의 한 글들이 참 많더군요..

일단 설정 파일을 찾았습니다.

그런데 저는 또 ssl 이 적용이 되어 있어 ssl가 적용되는 걸로 찾았습니다.

제가 적용한 파일입니다.

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';

}


# Set the cache file

set $cachefile "/wp-content/cache/supercache/$http_host/$cache_uri/index.html";

if ($https ~* "on") {

    set $cachefile "/wp-content/cache/supercache/$http_host/$cache_uri/index-https.html";

}


# Add cache file debug info as header

#add_header X-Cache-File $cachefile;


# Try in the following order: (1) cachefile, (2) normal url, (3) php

location / {

  try_files $cachefile $uri $uri/ /index.php?$args;

}

이렇게 한 다음 wp-super-cache.conf 파일을 만들고 업로드를 했습니다.

그리고  include /home/myroot/www/home1/nginx.conf; 파일에 

include /home/myroot/www/home1/wp-super-cache.conf;

라고 링크를 걸었습니다.

이후 nginx -t 라고 입력해 테스트를 해보니

nginx.conf 파일에서 오류가 출력 되더군요

그래서 또 검색을 해보니 딱히 답이 없었습니다.

그러던 중 모든 문제는 아주 단순하다 라는 그 동안 노하우를 바탕으로

wp-super-cache.conf 파일을 찬찬히 확인 해보니

location / {

  try_files $cachefile $uri $uri/ /index.php?$args;

}

라는 부분이 눈에 들어 왔습니다.

아~ 이거구나 라고 생각하고

nginx.conf 파일에

 location / {

        index  index.php index.html;

        try_files $uri $uri/ /index.php?$args;

    }

와 wp-super-cache.conf 의 소스가 중복 된다는 생각을 하고 

nginx.conf 파일에서 위 내용을 주석 처리 했습니다.

그리고 다시 

 nginx -t 

를 입력하니 이번에는 ok 가 되었습니다.

ㅋㅋㅋㅋ

곧바로 service nginx restart

서버 재부팅 하고 적용하니 

황당;;;

메인 페이지가 403 오류가 뜨는겁니다.

아~~~~~!!!

머야;;;;;;;;

그러다 다른 탭에 떠있던 홈페이지 싱글페이지 그러니깐 

aaa.com/123 을 새로고침 하니 짠 하고 나오는 겁니다.

그럼 머야 메인 페이지만 안나오는건가?

하고 카테고리를 눌러보니 헐;;;

메인 페이지와 카테고리만 403 오류가 나오는겁니다.

또 구글 검색....

대부분 권한 문제다 라고 하더군요

그럼 권한 설정 다시 해보자 싶어서

chown -R myroot:myroot /home/myroot/www/home1/

로 입력하고 재부팅을 했는데 

그래도 깜깜 무소식 이었습니다.

일단 홈페이지 접속자를 위해서 이전 상태로 되돌리고 

또 구글에 힘을 빌려보기로 했습니다.

그런데 답이 없더군요..

그런데 ngnx.conf 파일에서 주석 처리 한 부분이 눈에 다시 들어 왔습니다.

location / {

        index  index.php index.html;

        try_files $uri $uri/ /index.php?$args;

    }

바로 이거 였죠.

그런데 

wp-super-cache.conf 파일에는 이렇게 되어 있더군요

location / {

  try_files $cachefile $uri $uri/ /index.php?$args;

}

어디가 다른지 찾으셨나요

wp-super-cache.conf  파일에는 ngnx.conf  파일에 두번째 라인이 없더군요.

 index  index.php index.html;

요녀석 말입니다.

이것 때문인가 하고 생각 하다

일단 추가 해보기로 했습니다.

location / {

index  index.php index.html;

  try_files $cachefile $uri $uri/ /index.php?$args;

}

로 wp-super-cache.conf 로 수정해서 서버를 재 시작 하고 나니

오~~~ 이번에는 제대로 출력 되더군요.

ㅎㅎㅎㅎ

현재 nginx 서버에 WP Super Cache 를 적용하고 상당히 만족하고 있습니다.

페이지 로딩 속도가 눈에 다르게 빨라진걸 직접 체험 하겠더군요 ㅋㅋㅋ

정말 엄청 빨라 졌습니다 ㅋㅋㅋ

어제 밤 12시부터 새벽 3시까지 있었던 일입니다. ㅎㅎ


Comments