У меня есть сервер, получающий некоторый трафик от балансировщика нагрузки, завершающего SSL - в этом случае он приходит как HTTP через порт 80 с http_x_forwarded_proto
= "https"
Мне нужно правило mod_rewrite, которое разрешает только прямой HTTPS-трафик или перенаправленный HTTPS-трафик.
У меня есть это до сих пор:
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: неверные разделители флага
ошибка.
Что мне нужно исправить, чтобы это работало, и это лучший подход?
apache-2.2
mod-rewrite
Ярина
источник
источник
Если у вас есть балансировщик нагрузки, который всегда использует SSL при взаимодействии с сервером, вам нужно пропустить первую проверку, поскольку она всегда будет истинной. (Если вы разгружаете SSL на балансировщике нагрузки, первая строка всегда верна, если кому-то не удастся напрямую подключиться к вашему серверу с использованием SSL, в этом случае это будет false и не будет пытаться перенаправить, так как
X-Forwarded-Proto
будет пропущено.)Код, который я использую, так как мы всегда общаемся через SSL между ELB и веб-сервером:
источник