SSL 종료로드 밸런서에서 트래픽을받는 서버가 있습니다.이 경우 서버는 포트 80을 통한 HTTP로 http_x_forwarded_proto
“https”로 나타납니다.
직접 HTTPS 트래픽 또는 전달 된 HTTPS 트래픽 만 허용하는 mod_rewrite 규칙이 필요합니다.
나는 지금까지 이것을 가지고있다 :
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:http_x_forwarded_proto} != https
RewriteCond %{HTTP:http_x_forwarded_proto} != HTTPS
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
하지만 나는 점점
RewriteCond : 잘못된 플래그 구분 기호
오류.
이 작업을 수행하려면 무엇을 수정해야합니까? 이것이 최선의 방법입니까?
답변
문제는 “! =”다음의 공백입니다.
작업 버전 :
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
교활한…
답변
서버와 통신 할 때로드 밸런서가 항상 SSL을 사용하는 경우 항상 사실이므로 첫 번째 검사를 생략해야합니다. (로드 밸런서에서 SSL을 오프로드하는 경우 누군가 SSL을 사용하여 서버에 직접 접근하지 않는 한 첫 번째 행은 항상 참입니다.이 경우 거짓으로 X-Forwarded-Proto
인해 누락 되어 리디렉션하지 않습니다 .)
ELB와 웹 서버간에 항상 SSL을 통해 통신하기 때문에 사용중인 코드 :
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]