AWS로드 밸런서 뒤에 WordPress 사이트를 배치하는 방법

Aug 18 2020

HTTPS 및 WAF를 사용할 수 있도록로드 밸런서 뒤에 배치하려는 AWS EC2 Linux 서버에 호스팅 된 오래된 wordpress 사이트가 있습니다. 나는 다소 경험이 많은 시스템 관리자이지만 워드 프레스에 익숙하지 않습니다. 로드 밸런서와 서버 사이의 리디렉션 루프에 들어 가지 않는 동시에 HTTPS를 통해 콘텐츠를로드하는 데 문제가 있습니다.

포트 80에서 서버와 통신하기위한로드 밸런서 설정이 있고 WP_SITEURL / WP_HOME이 http : //로 설정된 경우 스크립트와 CSS를로드하려고하기 때문에 크롬 개발 콘솔에서 혼합 콘텐츠 오류가 발생합니다. http. WP_SITEURL / WP_HOME을 https : //로 변경하면 wordpress가 포트 80에서 통신을 시도하는로드 밸런서를 https로 리디렉션하려고 계속 시도하기 때문에 리디렉션 루프가 생성됩니다.

리소스, 스크립트 등에 대한 기본 URL을 https로 유지하면서로드 밸런서가 포트 80에서 서버에 도달하도록 허용하는 방법이 있습니까?

답변

1 kierzniak Aug 27 2020 at 23:59

WordPress가 https 프록시 (로드 밸런서) 뒤에 있으면 https가 활성화되어 있는지 알지 못합니다. 프록시는 https (443 포트)를 통해 작동하지만 프록시와 WordPress 간의 통신은 http (80 포트)를 통해 이루어집니다. WordPress 트래픽이 http를 통해 이루어지기 때문에 https에서 http (WordPress 사용)로 리디렉션 루프가 발생하고 다시 http에서 https (프록시 사용)로 리디렉션 루프가 발생합니다. WordPress에서 https 작업을 시작하도록 강제해야합니다.

이 줄을 귀하의 wp-config.php

$_SERVER['HTTPS'] = 'on';

때때로 프록시는 HTTP_X_FORWARDED_PROTO원래 트래픽이 https에 있음을 알리기 위해 WordPress에 추가 헤더 를 보냈습니다 . 좀 더 유연하게 사용할 수 있습니다.

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

https를 변경 WP_SITEURL하고 WP_HOME사용하십시오. 그리고 데이터베이스의 모든 링크를 https로 바꿉니다.

참고: https://developer.wordpress.org/reference/functions/is_ssl/