워드프레스로 사이트를 구축하였다면 nginx 설정이 필요한데요.
오늘은 nginx 설정을 간단하게 알아보겠습니다.
Nginx
Ngninx는 2002년에 러시아의 프로그래머 이고르 시쇼브(Igor Sysoev)가 Apache HTTPd를
코딩하다 문제점을 해결하기 위해서 네이티브 Win32 환경에도 돌아갈 무설치 웹 서버 데몬
프로그램을 개발하기 시작하여 2004년 10월 4일에 버전 0.1.0을 오픈 소스로 공개했습니다.
무엇보다 가벼우면서도 강력한 프로그램을 목표로 개발되어 운영 중인 오픈 소스
웹 서버 프로그램으로 ‘엔진엑스’라고 읽습니다.
HTTP와 리버스 프록시, IMAP/POP3 등의 서버 구동이 가능하며, Java 서블릿은 대개 Apache의
Tomcat을 연동해서 구동하고, PHP의 경우 PHP-FPM(FastCGI Process Manager)을 연동해서
구동하도록 설정하는 것이 일반적입니다.
2022년 5월 기준으로 웹 서버 소프트웨어 순위는 엔진엑스(33.3%), 아파치 HTTP 서버(31.6%),
클라우드플레어(21.6%), LiteSpeed(12.1%), MS IIS(6.0%) 순으로 알려져 있습니다.
워드프레스 nginx 설정
먼저 설정값은 별도로 변경하지 않았다면 nginx 기본 설치 폴더인
/etc/nginx/sites-available/default에 위치해 있습니다.
모든 작업전에 백업을 통해서 원복하기 위해서 기본 설정을 백업합니다.
sudo cp default default.old
이 후 이제 default 파일을 수정하겠습니다.
sudo nano /etc/nginx/sites-available/default
기본적으로 example.com에 대해서 설정하였고,
저의 경우 php-handler를 127.0.0.1:9000으로
설정한 상황입니다.
nano /etc/php/8.0/fpm/pool.d/www.conf
의 내용 중 listen=/run/php/php8.0-fpm.sock를 찾아서 수정하면 됩니다.
본인의 도메인으로 변경하여 사용하시면 될것 같네요.
그리고 최초 nginx 설정시에는 http 설정만 되어 있는 상태에서 사용하시면 됩니다.
80포트에 대한 리다이렉션은 삭제하고 인증 받으셔야 합니다.
주요 내용에 대해서 주석을 달아 놓았는데요. 본인의 설정에 따라 변경하시면 됩니다.
혹시 www를 붙이시려면 default 설정 위치를 변경하시면 됩니다.
location / { return 301 https://example.com$request_uri; expires epoch;
upstream php-handler {
server 127.0.0.1:9000;
}
server {
listen 443 ssl http2;
server_name example.com;
#루트 설정
root /var/www/wordpress;
#인덱스 설정
charset utf-8;
index index.php index.htm index.nginx-debian.html index.html;
# SSL 인증서 설정
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
try_files $uri $uri/ /index.php?$args;
}
error_page 404 /404.html;
# PHP-FPM 연동 설정
location ~ \.php$ {
fastcgi_pass php-handler;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
#letsencrypt 인증서
location ~ /\.well-known/acme-challenge/ {
default_type "text/plain";
root /var/www/letsencrypt;
}
}
server {
listen 443 ssl http2 default;
server_name www.example.com;
location / {
return 301 https://example.com$request_uri;
expires epoch;
}
# SSL 인증서 설정
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
}
server {
listen 80 default;
server_name example.com www.example.com;
location / {
return 301 https://example.com$request_uri;
expires epoch;
}
}
그리고 나머지 443의 www를 리다이렉트 하여 www를 없애고
http 설정은 모두 리다이렉트 시켰습니다.
실제 사이트 설정을 해놓은 server 블럭이 default로 처리되지 않도록 하는 것이 중요합니다.
여기에서도 www를 리다이렉트하는 server_name www.example.com;을 default 설정했습니다.
또한 return 301 아래에 expires epoch; 을 붙여주는 것은 301 리다이렉트가
캐싱되지 않도록 하기 위해서 설정한 것입니다.
nginx 재기동하기
그리고 nginx 설정이 완료되면 nginx -t로 제대로 설정되었는지 확인합니다.
sudo nginx -t
여기서 에러가 난다면 다시 파일을 열어서 천천히 확인해보도록 합니다.
그리고 마지막으로 nginx를 재기동하시면 되는데요.
service nginx stop/start를 하시거나 restart를 하셔도 무방합니다.
sudo service nginx restart
그럼 잘 사용하시기 바랍니다.