워드프레스, 클라우드플레어 Flexible SSL 설정하는 1가지 방법

Photo of author

HTML 제작소

웹사이트의 보안은 현대 웹 개발에서 필수적인 요소다. 특히 HTTPS를 사용해 데이터를 암호화하고 웹사이트 방문자에게 신뢰를 제공하는 것은 필수적이다. 클라우드플레어(Cloudflare)를 이용하면 비교적 간편하게 SSL 인증서를 적용할 수 있으며, 그중에서도 특히 유용한 기능이 Flexible SSL이다. 이 글에서는 클라우드플레어의 Flexible SSL을 워드프레스에 적용하고 발생할 수 있는 문제를 해결하는 방법을 설명한다.

클라우드플레어 Flexible SSL이란?

클라우드플레어의 SSL 옵션 중 하나인 Flexible SSL은 서버와 클라우드플레어 간의 트래픽은 HTTP로 처리하고, 클라우드플레어와 사용자 간의 트래픽은 HTTPS로 처리하는 방식이다. 이 방식은 서버에 SSL 인증서가 없는 경우에도 HTTPS를 적용할 수 있게 해주기 때문에 많은 워드프레스 사용자가 선호한다. 하지만, 이 설정을 잘못 적용하면 워드프레스 관리자 페이지(wp-admin) 접근이나 사이트 동작에 문제가 발생할 수 있다.

워드프레스에 Flexible SSL 적용하기

1. 클라우드플레어 설정

먼저 클라우드플레어 계정에 로그인한 후, SSL/TLS 메뉴로 이동한다. 여기서 SSL 설정을 Flexible로 선택한다. 이 옵션은 클라우드플레어와 웹사이트 방문자 간의 연결을 HTTPS로 설정하며, 서버와 클라우드플레어 간의 연결은 HTTP로 유지한다. 이를 통해 HTTPS가 적용된 것처럼 보이지만, 실제로 서버 측에서는 HTTPS 설정이 필요 없다.

cloudflare flexible ssl 설정
cloudflare flexible ssl 설정
cloudflare flexible ssl 설정
cloudflare flexible ssl 설정

2. 워드프레스 설정

클라우드플레어에서 Flexible SSL을 설정한 후, 워드프레스에서 몇 가지 추가적인 설정을 해줘야 한다. 그렇지 않으면 HTTPS 리디렉션 문제가 발생할 수 있다.

1) wp-config.php 파일 수정

워드프레스가 클라우드플레어의 Flexible SSL을 올바르게 인식하도록 하기 위해, wp-config.php 파일에 아래 코드를 추가한다.

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

이 코드는 클라우드플레어를 통해 HTTPS 요청이 들어오면, 워드프레스가 이를 HTTPS로 인식하게 만들어 준다. 이를 통해 워드프레스 관리자 페이지나 다른 내부 링크에서 HTTPS 오류가 발생하는 것을 방지할 수 있다.

/* That's all, stop editing! Happy publishing. */

/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
        define( 'ABSPATH', __DIR__ . '/' );
}

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';

위 코드는 wp-config.php 파일에 해당 코드를 추가한 모습이다. require_once 윗 줄에 해당 코드를 삽입하면 된다.

2) HTTPS 리디렉션 설정

워드프레스가 HTTPS를 강제로 사용하도록 하려면, 사이트 URL을 HTTPS로 변경해야 한다. 워드프레스 관리자 페이지에서 설정(Settings) -> 일반(General)으로 이동한 후, 사이트 주소(Site Address)와 워드프레스 주소(WordPress Address)를 모두 https://로 시작하도록 변경한다. 이 설정은 워드프레스가 모든 내부 링크를 HTTPS로 처리하게 해준다.

3. 서버 설정 점검

이미 워드프레스가 http 로 정상 작동한다면 별다른 설정을 필요로 하지 않을 것이다. 하지만 문제가 있을 수도 있기 때문에 현재 보고 있는 워드프레스 사이트의 NGINX 설정을 공유한다.

server {
    listen 80;
    server_name html-craft.com www.html-craft.com;

    root /var/www/html-craft/wordpress;
    index index.php index.html index.htm;

    # 요청 크기 제한을 늘리기 위한 설정
    client_max_body_size 100M;

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

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

    location ~ /\.ht {
        deny all;
    }
}

문제 해결

클라우드플레어에서 이미 HTTPS 리디렉션을 설정했는데도 wp-admin에 접근할 때 문제가 발생한다면, 이는 서버 쪽이나 워드프레스 설정에서 HTTPS를 올바르게 인식하지 못하기 때문일 수 있다. 앞서 설명한 대로 wp-config.php 파일을 수정했음에도 문제가 해결되지 않는다면, 플러그인 충돌이나 캐시 문제일 수 있으므로 해당 부분을 점검해보자.

특히, 캐시 문제의 경우 클라우드플레어에서 캐시를 정리하거나 워드프레스 캐시 플러그인을 통해 캐시를 삭제하면 문제가 해결될 수 있다.

결론

클라우드플레어의 Flexible SSL을 사용하면 서버에 SSL 인증서가 없어도 HTTPS를 적용할 수 있어 편리하다. 하지만 올바르게 설정하지 않으면 워드프레스 사이트에 문제가 발생할 수 있으므로, 위에서 설명한 단계를 따라 정확하게 설정하는 것이 중요하다. 이를 통해 HTTPS가 원활하게 적용된 안전한 웹사이트를 운영할 수 있다.

Leave a Comment