Eu tenho um servidor recebendo algum tráfego de um balanceador de carga de terminação SSL; nesse caso, ele aparece como HTTP pela porta 80 com um http_x_forwarded_proto
= "https"
Quero uma regra mod_rewrite que permita apenas tráfego HTTPS direto ou tráfego HTTPS encaminhado.
Eu tenho isso até agora:
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]
mas estou recebendo
RewriteCond: delimitadores de sinalizadores inválidos
erro.
O que preciso corrigir para que isso funcione e essa é a melhor abordagem?
apache-2.2
mod-rewrite
Yarin
fonte
fonte
Se você tiver o balanceador de carga sempre usar SSL ao se comunicar com o servidor, precisará omitir a primeira verificação, pois sempre será verdadeira. (Se você estiver transferindo o SSL no balanceador de carga, a primeira linha será sempre verdadeira, a menos que alguém consiga atingir diretamente seu servidor usando SSL, caso em que seria falso e não tentaria redirecionar, pois
X-Forwarded-Proto
estaria ausente.)O código que estou usando, pois estamos sempre nos comunicando por SSL entre o ELB e o servidor da web:
fonte