워드프레스에서 고유주소(퍼머링크)를 “글 이름”으로 설정했을 때 404 오류가 발생하는 문제는 일반적으로 Nginx 서버 설정이 워드프레스의 퍼머링크 구조를 제대로 처리하지 못하기 때문입니다. 이 문제를 해결하려면 Nginx 설정 파일을 수정하여 워드프레스의 퍼머링크를 지원하도록 해야 합니다.
문제 원인 #
- Nginx는 기본적으로 워드프레스의 고유주소(퍼머링크)를 처리할 수 있는 rewrite 규칙이 설정되어 있지 않습니다.
- 워드프레스는 퍼머링크를 사용할 때
index.php
를 통해 모든 요청을 처리하도록 설계되어 있습니다. 하지만 Nginx는 이에 대한 설정이 없으면 정적 파일로 처리하려고 하기 때문에 404 오류가 발생합니다.
해결 방법 #
1. Nginx 설정 파일 수정 #
- Nginx 설정 파일 경로:
- 일반적으로
/etc/nginx/sites-available/default
또는/etc/nginx/conf.d/your-site.conf
파일을 편집합니다. - 만약 가상 호스트를 사용한다면, 해당 사이트의 설정 파일을 편집하세요.
- 일반적으로
- 설정 파일을 엽니다:
sudo nano /etc/nginx/sites-available/default
server
블록 안에 다음 코드를 추가합니다:
server {
...
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP-FPM을 사용하는 경우
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php-fpm.sock; # PHP-FPM 소켓 경로
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# WordPress REST API 지원
location ~* ^/wp-json/ {
rewrite ^/wp-json/(.*?)$ /index.php?rest_route=/$1 last;
}
# 파일 접근 제한
location ~* \.(htaccess|htpasswd|ini|log|sh)$ {
deny all;
}
# 캐싱 설정 (선택 사항)
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires max;
log_not_found off;
}
...
}
변경 사항을 저장하고 파일을 닫습니다.
2. Nginx 재시작 #
설정 파일을 수정한 후 Nginx를 재시작하여 변경 사항을 적용합니다.
sudo systemctl restart nginx
3. 워드프레스 퍼머링크 설정 확인 #
- 워드프레스 관리자 대시보드에 접속합니다.
- 설정 > 고유주소로 이동합니다.
- “글 이름” 옵션을 선택하고 변경 사항을 저장합니다.
추가 확인 사항 #
1. PHP-FPM 설정 확인 #
- Nginx가 PHP를 처리하기 위해 PHP-FPM을 사용하는지 확인하세요.
- PHP-FPM이 설치되어 있지 않다면, 다음 명령어로 설치합니다:
sudo apt install php-fpm
- PHP-FPM이 실행 중인지 확인합니다:
sudo systemctl status php-fpm
2. 파일 및 디렉토리 권한 확인 #
- 워드프레스 파일과 디렉토리의 권한이 올바르게 설정되어 있는지 확인하세요.
- 일반적으로 다음 권한을 사용합니다:
sudo chown -R www-data:www-data /var/www/your-wordpress-directory
sudo find /var/www/your-wordpress-directory -type d -exec chmod 755 {} \;
sudo find /var/www/your-wordpress-directory -type f -exec chmod 644 {} \;
3. Nginx 로그 확인 #
- 문제가 지속된다면, Nginx의 에러 로그를 확인하여 추가 정보를 얻을 수 있습니다.
- 에러 로그는 일반적으로
/var/log/nginx/error.log
에 위치합니다.
sudo tail -f /var/log/nginx/error.log
결론 #
Nginx에서 워드프레스의 고유주소(퍼머링크)를 “글 이름”으로 설정했을 때 404 오류가 발생하는 문제는 Nginx 설정 파일에 rewrite 규칙이 없기 때문입니다. 위의 단계를 따라 Nginx 설정을 수정하면 문제를 해결할 수 있습니다. 추가로 PHP-FPM 설정과 파일 권한도 확인하여 문제를 완전히 해결하세요.