NGINX로 워드프레스 사이트가 구동하는 경우 멀티사이트 하위 디렉토리 설정 방법

저는 NGINX로 구동되는 워드프레스 사이트를 잘 운영하던 중에 멀티사이트를 활성화시켰습니다. 그런데 “너무 많은 리디렉션을 시도했다”고 사이트 접속이 되지 않았습니다. NGINX로 구동되는 워드프레스 멀티사이트는 서버에서 몇 가지 설정이 필요합니다.

1. 멀티사이트 활성화

멀티사이트를 활성화하려면 wp-config.php 파일을 FTP나 SSH vi 에디터 등으로 엽니다. 그리고 “* That’s all, stop editing! Happy blogging. */”라는 주석 아래에 다음과 같은 코드를 붙여 넣습니다.

/* Multisite */
define( ‘WP_ALLOW_MULTISITE’, true );

워드프레스 알림판으로 돌아와서 메뉴 > 도구를 보면 멀티사이트 설치가 생성된 것을 확인할 수 있습니다.

멀티사이트 설정에 대한 자세한 정보 보기(준비중)

멀티사이트 설치를 문제 없이 잘 진행했다면 상단 메뉴에 내 사이트 > 네트워크 설정 메뉴가 생긴 것을 확인할 수 있다. 그리고 네트워크 관리자 메뉴 > 사이트에서 멀티 사이트를 개설할 수가 있다. 그런데 사이트를 개설하고 바로 접속은 불가능하다.

멀티사이트 주소를 하위 디렉토리로 설정하는 경우와 NGINX로 구동하는 경우 몇 가지 서버 설정이 필요하다. 서버 설정은 어느 정도 서버에 대한 지식이 있으면 작업할 때 수월할 것이다. 작업하기 어렵다면 [유료서비스(준비중)]에서 의뢰할 수 있다.

2. 플러그인 설치

먼저 네트워크 관리자 플러그인에서 Nginx Helper라는 플러그인을 설치해 준다. 그 다음 설치가 완료되었다면 설치한 플러그인 설정 페이지를 클릭해서 “Enable Nginx Map”을 활성화한다. 이때 wp-content/uploads 파일의 쓰기 권한이 설정되어 있어야 한다. URL 매핑은 하위디렉토리로 설정된 멀티사이트가 정상적으로 접근할 수 있도록 해준다.

3. 서버 설정

멀티사이트와 하위디렉토리가 정상적으로 작동할 수 있도록 서버 설정을 하면 모든 과정이 마쳐진다. 서버 설정은 어느정도 서버에 대한 지식이 있으면 작업이 수월하다는 것을 다시 한번 강조한다. 서버 작업은 SSH로 할 수가 있다. 만약 내 서버 접속 정보를 알 수 없다면 서버관리자나 웹서버 제공 업체에 문의하면 된다.

SSH로 NGINX 가상호스트 설정 파일로 이동한다. 데미안/우분투 버전 기준 파일 위치는 /etc/nginx/sites-available에 있다.

파일 상단에 Nginx 맵 경로를 사용하여 맵 지시문을 추가해 준다.

map $http_host $blogid {
    default 0;
    include /var/www/pathtoyoursite/wp-content/uploads/nginx-helper/map.conf;
}

위 코드를 추가해 준다면 플러그인에서 생성한 블로그 매핑을 서버가 읽어준다. 그러면 새 사이트를 추가할 때마다 플러그인이 매핑 파일을 자동으로 업데이트할 수 있어서 서버 구성을 다시 변경할 필요가 없다.

마지막으로, 가상 호스트 파일에서 server{} 적당한 위치에 다음 지시문을 추가해 준다. 보통은 location @php{} 지시문 뒤에 붙여 넣는다.

location ~ ^/files/(.*)$ {
  try_files /wp-content/blogs.dir/$blogid/$uri /wp-includes/ms-files.php?file=$1 ;
  access_log off; log_not_found off; expires max;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
	expires 24h;
	log_not_found off;
}

location ^~ /blogs.dir {
	internal;
	alias /var/www/pathtoyoursite/web/wp-content/blogs.dir ;
	access_log off; log_not_found off;      expires max;
}


if (!-e $request_filename) {
	rewrite /wp-admin$ $scheme://$host$uri/ permanent;
	rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
	rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
}

마지막 지시문 블록에서 두 번째에 있는 별칭 줄을 유의해야 한다. 해당 줄은 워드프레스 설치 경로로 내 사이트 설정에 따라 변경해 주어야 한다.

최종 단계

수정 파일을 저장하였다면, 설정을 적용하기 위하여 Nginx를 재시작해주어야 한다.

참고자료

1. How to configure Nginx for WordPress Multisite with subdirectories – www.computerworld.com/article/2871918/how-to-configure-nginx-for-wordpress-multisite-with-subdirectories.html

2. 워드프레스 멀티사이트 설치하기 – www.thewordcracker.com/intermediate/setup-wordpress-multisite/

3. 워드프레스 멀티사이트에서 서브 도메인과 서브 디렉터리 간 전환하기 – avada.co.kr/멀티사이트-서브도메인과-서브디렉터리-간-전환/


게시됨

카테고리

작성자

태그: