Wordpress Https (Nginx) 구성시 ERR_TOO_MANY_REDIRECTS 에러 해결

코코블루·2023년 12월 5일
0

Wordpress 앞단에 SSL 적용을 위해 Nginx를 두는 경우가 있다.
Nginx를 통해 conf를 작성하고, Wordpress 설정에서 SITE URL, HOME URL을 지정하면, "ERR_TOO_MANY_REDIRECTS"라는 식으로 에러가 발생한다. 이 케이스에는 간단하게 해결할 수 있다.

환경 소개

일단, 나 같은 경우에는 Docker를 이용해서 Nginx, Wordpress를 연동해두었는데 Wordpress에 내장된 내용은 아예 건들지 않고, Nginx만 아래와 같이 설정했다.

server {
    listen 80;
    listen [::]:80;

    server_name <SITE URL>;

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
  listen 443 ssl;
  listen [::]:443 ssl;

  server_name <SITE URL>;

  ssl_certificate certs/live/<SITE URL>/fullchain.pem;
  ssl_certificate_key certs/live/<SITE URL>/privkey.pem;

  ssl_session_timeout 5m;
  ssl_protocols  TLSv1.2;
  ssl_ciphers HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers on;

  ## This should be in your http block and if it is, it's not needed here.
#   index index.php;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
        proxy_pass http://wordpress;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
        proxy_pass http://wordpress;
    }

    location / {
        add_header          Access-Control-Allow-Origin '*';
        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_pass http://wordpress;
    }

    # For cert-bot
    location /.well-known/ {
        root /var/www/;
    }

  client_max_body_size 64M;

  # Enable Gzip compression
  gzip          on;

  # Compression level (1-9)
  gzip_comp_level     5;

  # Don't compress anything under 256 bytes
  gzip_min_length     256;

  # Compress output of these MIME-types
  gzip_types
      application/atom+xml
      application/javascript
      application/json
      application/rss+xml
      application/vnd.ms-fontobject
      application/x-font-ttf
      application/x-font-opentype
      application/x-font-truetype
      application/x-javascript
      application/x-web-app-manifest+json
      application/xhtml+xml
      application/xml
      font/eot
      font/opentype
      font/otf
      image/svg+xml
      image/x-icon
      image/vnd.microsoft.icon
      text/css
      text/plain
      text/javascript
      text/x-component;

  # Disable gzip for bad browsers
  gzip_disable  "MSIE [1-6]\.(?!.*SV1)";
}

위와 같이 구성하고, Wordpress 설정에서 https로 시작하는 URL을 지정하면, wp-admin에 들어갈 때 ERR_TOO_MANY_REDIRECTS라는 에러가 발생하는데, 아래 방법으로 간단하게 해결할 수 있다.


    location / {
        add_header          Access-Control-Allow-Origin '*';
        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   https;
        proxy_pass http://wordpress;
    }

proxy_set_header X-Forwarded-Proto https;을 추가하면 된다. 해당 Header가 없으면 Wordpress에서는 http 요청으로 인식해서 http로 다시 보내고 nginx는 또 https로 보내고, 계속 핑퐁이 일어나는 모양이다.

이 문제가 일어나는 분들 꼭 해결하셨으면 좋겠다.

profile
Have A Happy Coding Time!

0개의 댓글