워드프레스 멀티사이트 구축 및 관리 방법 1편 [Nginx 일경우] - KeyTech | Hosting & WordPress

워드프레스 멀티사이트 구축 및 관리 방법 1편 [Nginx 일경우]

워드프레스 멀티사이트 - 듀얼 모니터가 배치된 세련된 워크스테이션, 두 개의 화면은 검은색이며, 주변에 기계식 키보드와 마우스가 있는 모습.

워드프레스 멀티사이트 구축 및 관리 방법 1편 [Nginx 일경우]

워드프레스 멀티사이트는 하나의 워드프레스 설치를 통해 여러 개의 사이트를 관리할 수 있는 기능입니다. 이를 활용하면 여러 개의 웹사이트를 효율적으로 운영할 수 있으며, 다국어 지원에도 유리합니다. 특히 Nginx 환경에서 멀티사이트를 설정하려면 서버 설정과 DNS 구성을 신중하게 고려해야 합니다. 이번 가이드에서는 멀티사이트 다국어 운영을 위한 기본 설정부터, Nginx 환경에서의 최적화 방법까지 단계별로 설명하겠습니다.

목차

  1. 멀티사이트 구축을 위한 필수 요구 조건
  2. 멀티사이트 활성화시키기 [wp-config, Nginx]
  3. 워드프레스 네트워크 설정하기
  4. wp-config.php 추가 수정하기
  5. 서브 도메인인 경우 DNS 설정
  6. 워드프레스 Nginx 최종 설정 및 적용
  7. 확인 및 결론

1. 멀티사이트 구축을 위한 필수 요구 조건

워드프레스 멀티사이트를 구축하려면 사전에 몇 가지 필수 요구 조건을 충족해야 합니다. 특히 Nginx 환경에서 멀티사이트를 운영하려면 서버 설정 및 DNS 구성까지 고려해야 합니다.

1.1 서버 요구 사항

  • PHP 7.4 이상 – 최신 PHP 버전이 보안 및 성능에 유리
  • MySQL 5.7 / MariaDB 10.3 이상 – 데이터베이스 호환성 확보
  • Nginx 설치 및 설정 가능
  • 워드프레스 최신 버전 설치 완료

1.2 멀티사이트 운영 방식 선택

멀티사이트를 구성할 때는 두 가지 방식 중 하나를 선택해야 합니다.

  • 서브도메인 방식: site1.example.com, site2.example.com
  • 서브디렉토리 방식: example.com/site1, example.com/site2

1.3 필요 패키지 설치

Nginx 환경에서는 필수적으로 php-fpmMySQL이 설치되어 있어야 합니다.

sudo apt update
sudo apt install nginx php-fpm php-mysql mysql-server -y

2. 멀티사이트 활성화시키기 [wp-config, Nginx]

워드프레스 멀티사이트 기능을 사용하려면 기본적으로 비활성화되어 있는 설정을 활성화해야 합니다. 또한, Nginx 환경에서 서브디렉토리 방식과 서브도메인 방식을 선택하여 올바르게 구성해야 합니다.

2.1 wp-config.php 수정

워드프레스의 루트 디렉터리에서 wp-config.php 파일을 열고, 아래 코드를 추가합니다.

define('WP_ALLOW_MULTISITE', true);

이제 워드프레스 대시보드에서 멀티사이트 기능을 활성화할 수 있습니다.

2.2 Nginx 설정

Nginx 서버에서 멀티사이트를 운영할 수 있도록 설정 파일을 수정해야 합니다. **서브디렉토리 방식과 서브도메인 방식의 설정이 다르므로, 자신의 운영 방식에 맞게 설정해야 합니다.**

서브디렉토리 방식 설정

서브디렉토리 방식은 example.com/site1/, example.com/site2/처럼 운영됩니다. 따라서 서버 설정에서 도메인 이름(`server_name`)을 단일 도메인으로 유지해야 합니다.

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    
    index index.php index.html index.htm;
    
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

🔹 서브디렉토리 방식의 주요 특징:

  • 메인 도메인(example.com) 아래 서브디렉토리 형식으로 사이트가 생성됨.
  • 추가적인 DNS 설정이 필요하지 않음.
  • 메인 도메인의 SEO 권한을 그대로 유지 가능.

서브도메인 방식 설정

서브도메인 방식은 site1.example.com, site2.example.com처럼 운영됩니다. 이를 위해 Nginx 설정에서 **와일드카드 서브도메인(`*.example.com`)**을 허용해야 합니다.

server {
    listen 80;
    server_name *.example.com;
    root /var/www/html;
    
    index index.php index.html index.htm;
    
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

🔹 서브도메인 방식의 주요 특징:

  • 각 사이트가 개별 서브도메인(`site1.example.com`, `site2.example.com`)을 가짐.
  • 서버 설정에서 server_name *.example.com; 을 사용하여 모든 서브도메인 요청을 처리.
  • 각 서브도메인에 대한 DNS 설정이 필요함.

2.3 서브디렉토리 방식 vs 서브도메인 방식 차이점

구분 서브디렉토리 방식 서브도메인 방식
URL 구조 example.com/site1/, example.com/site2/ site1.example.com, site2.example.com
Nginx 설정 server_name example.com; server_name *.example.com;
DNS 설정 필요 여부 필요 없음 필요 (와일드카드 DNS 설정 필요)
SEO 영향 메인 도메인의 SEO 권한 유지 개별 서브도메인으로 SEO가 분리될 가능성 있음

2.4 Nginx 설정 적용

위 설정을 적용한 후, 다음 명령어를 실행하여 Nginx를 다시 시작합니다.

<pre style=”background-color: #f4f4f4; padding: 10px;

3. 워드프레스 네트워크 설정하기

워드프레스 멀티사이트를 활성화했다면 이제 네트워크 설정을 진행해야 합니다. 이 과정에서는 멀티사이트의 기본 구조(서브도메인 또는 서브디렉토리)를 선택하고, 네트워크를 설정하는 작업을 수행합니다.

3.1 워드프레스 네트워크 설치

워드프레스 관리자 패널(/wp-admin)에서 멀티사이트 설정을 진행할 수 있습니다.

  1. 워드프레스 관리자 패널(wp-admin)에 로그인
  2. 왼쪽 메뉴에서 도구 → 네트워크 설정으로 이동
  3. 네트워크 유형 선택: 서브도메인 또는 서브디렉토리

🔹 서브도메인 방식 선택 시:

  • 예제: site1.example.com, site2.example.com
  • 서브도메인을 사용하려면 와일드카드 DNS 설정이 필요함.

🔹 서브디렉토리 방식 선택 시:

  • 예제: example.com/site1/, example.com/site2/
  • 별도의 DNS 설정 필요 없음.

3.2 네트워크 정보 입력

네트워크 설정 화면에서 다음 정보를 입력합니다.

  • 네트워크 제목: 운영할 멀티사이트 네트워크의 이름
  • 관리자 이메일: 네트워크를 관리할 메일 주소 입력

입력을 완료한 후, 설치 버튼을 클릭합니다.

3.3 네트워크 활성화를 위한 코드 적용

설치를 마치면 wp-config.php.htaccess (Nginx 사용 시 nginx.conf)에 추가해야 할 코드가 제공됩니다.

🔹 wp-config.php 파일 수정

아래 코드를 wp-config.php 파일에서 /* That's all, stop editing! Happy publishing. */ 위에 추가합니다.

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false); // true: 서브도메인 방식, false: 서브디렉토리 방식
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

🔹 .htaccess 대신 Nginx 설정 파일 수정 (서브디렉토리 방식)

Nginx 환경에서는 .htaccess가 아니라 nginx.conf 또는 개별 사이트 설정 파일을 수정해야 합니다.

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

3.4 네트워크 설정 완료 후 로그인

변경 사항을 적용한 후 워드프레스 관리자 패널에서 다시 로그인합니다. 이제 상단 메뉴에 네트워크 관리자 항목이 추가된 것을 확인할 수 있습니다.

🔹 네트워크 관리자에서 할 수 있는 작업:

  • 새로운 사이트 추가 및 관리
  • 네트워크 전체 설정 변경
  • 플러그인 및 테마를 네트워크 전체에 적용

4. wp-config.php 추가 수정하기

이제 wp-config.php 파일을 추가로 수정하여 워드프레스 멀티사이트의 정상적인 동작을 보장해야 합니다. 기본 네트워크 설정을 적용했더라도 몇 가지 보안 및 최적화 설정을 추가하면 더 안정적인 환경을 구축할 수 있습니다.

4.1 기본 멀티사이트 설정 추가

이전 단계에서 wp-config.php 파일을 수정했지만, 추가적으로 적용해야 할 설정들이 있습니다. 아래의 코드를 파일 내 /* That’s all, stop editing! Happy publishing. */ 위에 추가하세요.

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false); // true: 서브도메인 방식, false: 서브디렉토리 방식
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
define('COOKIE_DOMAIN', '');

🔹 추가된 설정 설명:

  • SUBDOMAIN_INSTALL 설정: 서브도메인 방식인지 서브디렉토리 방식인지 정의 (true면 서브도메인 방식)
  • COOKIE_DOMAIN 비활성화: 로그인 유지 문제 해결을 위해 필요

4.2 관리자 로그인 유지 문제 해결

멀티사이트를 설정한 후 관리자로 로그인할 때 세션이 끊기거나 로그인 유지가 되지 않는 경우가 발생할 수 있습니다. 이를 방지하기 위해 다음 설정을 추가합니다.

define('ADMIN_COOKIE_PATH', '/');
define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');

이 설정을 추가하면 멀티사이트 환경에서 관리자 계정이 로그아웃되는 문제를 방지할 수 있습니다.

4.3 업로드 파일 크기 제한 설정

기본적으로 워드프레스 멀티사이트에서는 업로드 파일 크기가 제한될 수 있습니다. 파일 업로드 용량을 늘리려면 다음 코드를 추가합니다.

define('UPLOADS', 'wp-content/uploads');
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');

🔹 설정 설명:

  • 파일 업로드 경로 설정: UPLOADS 변수를 설정하여 모든 사이트에서 동일한 업로드 디렉토리를 사용하도록 함.
  • 메모리 제한 증가: 워드프레스의 메모리 제한을 256MB로 증가하고, 최대 메모리를 512MB로 설정.

4.4 SSL(HTTPS) 강제 적용

보안을 강화하고 SEO 최적화를 위해 HTTPS를 강제 적용하는 것이 좋습니다. 아래 설정을 추가하면 SSL을 자동으로 적용할 수 있습니다.

define('FORCE_SSL_ADMIN', true);
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
    $_SERVER['HTTPS'] = 'on';
}

이 설정을 추가하면 워드프레스 관리자 패널과 모든 로그인 페이지에서 HTTPS가 강제 적용됩니다.

4.5 wp-config.php 수정 후 적용

모든 설정을 완료했다면, 서버에서 캐시를 지우고 변경 사항을 적용해야 합니다. 아래 명령어를 실행하세요.

sudo systemctl restart nginx

이제 워드프레스 멀티사이트 환경이 정상적으로 작동하도록 설정이 완료되었습니다.

5. 서브 도메인인 경우 DNS 설정

워드프레스 멀티사이트를 서브도메인 방식으로 설정한 경우, 각 사이트가 정상적으로 작동하려면 올바른 DNS 설정이 필요합니다.

5.1 와일드카드 서브도메인 설정

서브도메인 방식(site1.example.com, site2.example.com)을 사용할 경우, 새로운 사이트를 추가할 때마다 개별적으로 서브도메인을 생성하는 것이 비효율적입니다. 따라서 와일드카드 서브도메인을 설정하여 자동으로 새로운 서브도메인이 생성되도록 해야 합니다.

DNS 설정에서 와일드카드 서브도메인을 추가하려면 아래와 같이 설정합니다.

✅ Cloudflare 또는 도메인 호스팅 서비스에서 설정

  • 도메인 관리 페이지에서 DNS 설정으로 이동
  • 새로운 A 레코드를 추가
  • 호스트: * (와일드카드 서브도메인 의미)
  • 값(서버 IP 주소): 123.456.78.90 (서버의 실제 IP 입력)
  • TTL(Time To Live) 값을 자동 또는 기본값으로 설정 후 저장

설정 예시:

Type:  A
Name:  *
Value: 123.456.78.90
TTL:   자동

이제 어떤 서브도메인(`site1.example.com`, `blog.example.com` 등)으로 접속하더라도 서버가 자동으로 응답할 수 있습니다.

5.2 Nginx 서버 설정에서 와일드카드 서브도메인 적용

DNS에서 와일드카드 서브도메인을 설정한 후, Nginx에서도 이를 인식하도록 설정해야 합니다.

Nginx 설정 파일을 열어(`example.com`을 사용 중이라 가정) 아래와 같이 변경합니다.

server {
    listen 80;
    server_name *.example.com;
    root /var/www/html;
    
    index index.php index.html index.htm;
    
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

설정이 완료되면 아래 명령어를 실행하여 Nginx를 다시 시작합니다.

sudo systemctl restart nginx

5.3 Let’s Encrypt SSL 인증서 설정 (HTTPS 적용)

만약 워드프레스 멀티사이트를 HTTPS(SSL)로 운영하려면 와일드카드 SSL 인증서를 추가로 설정해야 합니다. Let’s Encrypt를 사용하여 무료 와일드카드 SSL을 발급할 수 있습니다.

아래 명령어를 실행하여 Certbot을 설치합니다.

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

이제 Let’s Encrypt 와일드카드 SSL을 발급합니다.

sudo certbot --nginx -d example.com -d *.example.com --manual --preferred-challenges dns-01

명령어를 실행하면 DNS TXT 레코드를 추가해야 합니다. 도메인 제공업체에서 TXT 레코드를 추가한 후, Certbot이 인증을 완료하면 와일드카드 SSL이 적용됩니다.

5.4 와일드카드 SSL 인증서를 Nginx에 적용

SSL 인증서가 발급되면 Nginx 설정을 수정하여 HTTPS를 적용해야 합니다.

server {
    listen 443 ssl;
    server_name *.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    root /var/www/html;
    index index.php index.html index.htm;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

이제 변경된 설정을 적용하기 위해 Nginx를 다시 시작합니다.

sudo systemctl restart nginx

5.5 와일드카드 DNS 및 SSL 적용 후 테스트

이제 서브도메인이 자동으로 생성되는지 확인합니다.

  1. 워드프레스 관리자 패널(wp-admin)에서 새로운 사이트 추가
  2. 예제:
    • 사이트 주소: site1.example.com
    • 사이트 제목: 새로운 블로그
  3. 생성 완료 후, https://site1.example.com으로 접속하여 정상 동작 여부 확인

이제 서브도메인 방식의 워드프레스 멀티사이트가 정상적으로 설정되었습니다.

6. 워드프레스 Nginx 최종 설정 및 적용

이제 워드프레스 멀티사이트를 안정적으로 운영하기 위해 Nginx 최종 설정을 적용해야 합니다. 성능 최적화, 보안 강화, 캐시 설정을 통해 사이트 속도를 개선하고 서버 부하를 줄일 수 있습니다.

6.1 Nginx 설정 최적화

먼저, 기본 Nginx 설정을 최적화하여 멀티사이트가 원활하게 작동하도록 합니다.

Nginx 설정 파일을 열고 다음 내용을 추가하세요.

server {
    listen 80;
    server_name example.com *.example.com;
    
    root /var/www/html;
    index index.php index.html index.htm;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 캐시 최적화
    location ~* \.(?:ico|css|js|gif|jpe?g|png|woff2?|eot|ttf|otf|svg)$ {
        expires 6M;
        access_log off;
        add_header Cache-Control "public, max-age=15552000, immutable";
    }
}

🔹 설정 설명:

  • 캐시 최적화: 정적 파일(`.css`, `.js`, `.png` 등)의 캐시를 6개월로 설정하여 속도 개선
  • PHP 처리 최적화: FastCGI를 사용하여 PHP 실행 속도를 향상
  • 서브도메인 지원: `server_name example.com *.example.com;` 설정을 통해 모든 서브도메인 처리

6.2 Nginx Gzip 압축 활성화

Gzip 압축을 활성화하면 전송되는 데이터 크기를 줄여 사이트 로딩 속도를 개선할 수 있습니다. 아래 설정을 추가하세요.

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;

6.3 FastCGI 캐싱 적용 (선택 사항)

FastCGI 캐싱을 사용하면 PHP 요청을 줄여 서버 부하를 낮출 수 있습니다.

다음과 같이 FastCGI 캐싱을 활성화하세요.

fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout updating http_500;
fastcgi_cache_valid 200 301 302 10m;

🔹 설정 설명:

  • FastCGI 캐시 활성화: PHP 실행 결과를 캐시하여 서버 부하 감소
  • 오류 발생 시 캐시 유지: HTTP 500 등의 오류가 발생하면 기존 캐시를 유지하여 서비스 지속

6.4 Nginx 설정 테스트 및 재시작

설정 변경 후 반드시 Nginx 설정 파일이 올바른지 테스트해야 합니다.

sudo nginx -t

오류가 없으면 아래 명령어로 Nginx를 다시 시작합니다.

sudo systemctl restart nginx

6.5 최종 테스트

이제 브라우저에서 다음을 테스트하세요.

  • https://example.com → 메인 사이트 정상 동작 확인
  • https://site1.example.com → 서브사이트가 정상적으로 열리는지 확인
  • https://example.com/site1/ → 서브디렉토리 방식이 정상 동작하는지 확인

모든 설정이 정상적으로 적용되었다면 워드프레스 멀티사이트의 Nginx 최적화 및 설정 적용이 완료된 것입니다.

7. 확인 및 결론

이제 워드프레스 멀티사이트 구축이 완료되었습니다. 아래 단계별 점검을 통해 정상적으로 사이트가 운영되는지 확인하세요.

7.1 최종 점검 체크리스트

점검 항목 확인 여부
멀티사이트 기능이 활성화되었는가?
서브도메인 또는 서브디렉토리 방식이 정상적으로 동작하는가?
Nginx 설정이 올바르게 적용되었는가?
와일드카드 서브도메인이 정상적으로 설정되었는가?
SSL(HTTPS)이 정상적으로 적용되었는가?
Gzip 및 캐시 최적화가 적용되었는가?

7.2 추가적인 관리 팁

  • 멀티사이트 네트워크 관리: 관리자 패널(wp-admin/network/)에서 사이트 추가 및 설정 변경
  • 자동 백업 설정: 정기적인 백업을 위해 UpdraftPlus 또는 Jetpack 같은 플러그인 사용
  • 성능 모니터링: Query Monitor 플러그인을 활용하여 성능 점검
  • 보안 강화: Fail2Ban 또는 Wordfence를 활용하여 공격 방지

7.3 결론

이번 가이드를 따라 워드프레스 멀티사이트를 성공적으로 구축하고 Nginx 환경에서 최적화하는 방법을 학습했습니다.

멀티사이트는 다국어 지원, 여러 개의 브랜드 사이트 운영, 대형 네트워크 구축 등에 매우 유용한 기능입니다. 하지만 초기 설정과 유지보수가 중요하므로, 지속적으로 성능 및 보안 점검을 수행하는 것이 필요합니다.

앞으로의 계획은 다음과 같습니다:

  • ✅ 현재: Nginx 환경에서 워드프레스 멀티사이트 구축 완료
  • ➡️ 다음 글: 워드프레스 멀티사이트 구축 및 관리 방법 2편 [Apache 환경] 다루기

다음 가이드에서는 Apache 서버 환경에서 워드프레스 멀티사이트를 구축하는 방법을 자세히 설명하겠습니다.

이제 Nginx 환경에서 최적화된 멀티사이트 운영을 시작하세요! 🚀

Leave a Comment