이번편에서는 Nginx의 Reverse Proxy를 사용해서 워드프레스를 사용하는방법에 대해 포스팅해보겠습니다.
기본적으로 도메인을 하나만 사용하신다면 문제없으시겠지만 저처럼 여러개의 도메인과 서버를 사용해서 리버스프록시 서버가 필요할때 해결방법입니다.
일단 기본적으로 통신의 구성이
클라이언트 -> 리버스프록시 서버 -> 웹서버(워드프레스)
이렇게 갑니다. SSL인증서는 리버스프록시에 설정되어있으며
virtualhost로 웹서버(워드프레스)를 추가해주면 됩니다.
리버스프록시 구성(nginx 설정)
vi /etc/nginx/sites-available/[웹서버도메인]
내용은 간단하게 아래처럼 넣어주시면 됩니다.
upstream backendweb {
server [웹서버ip]:[포트];
keepalive 1024;
}
server {
listen 80 ;
listen [::]:80 ;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name [웹서버 도메인];
location / {
return 301 https://[웹서버 도메인]$request_uri; ###### HTTPS www로 리다이렉팅
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
index index.php index.html index.htm index.nginx-debian.html;
server_name [웹서버 도메인];
ssl on;
ssl_certificate /etc/letsencrypt/live/[인증서 도메인]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[인증서 도메인]/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/[인증서 도메인]/fullchain.pem;
include /etc/nginx/snippets/ssl.conf; ### SSL 보안설정내용경로
#Forward real ip and host to Plex
location / {
proxy_pass http://backendwiki/;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 1d;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
웹서버(워드프레스) 설정 변경
vi /var/www/html/wp-config.php
위 파일에 접근해서 맨 아래줄에 아래 내용을 추가해주고 저장해주세요.
define에 내용은 워드프레스 메모리 최적화이니 같이 적용해주셔도 무방합니다.
if($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'){
$_SERVER['HTTPS'] = 'on';
$_SERVER['SERVER_PORT'] = 443;
}
define('FS_METHOD', 'direct');
define ('WP_MEMORY_LIMIT', '512M');
그리고 nginx 를 한번씩 재시작 한 후 다시접근해보면
잘되는걸 확인할 수 있습니다.