Wpis z mikrobloga

czy jest na sali specjalista od httpd(apache) ogarniający plugin mod_rewrite, co by poratował wiedzą? Chodzi o przekierowanie HTTP do HTTPS. Samo przekierowanie HTTP do HTTPS bangla, natomiast gdy przychodzi request HTTPS to wpadam w pętlę HTTPS -> HTTPS.

By uniknąć pętli zastosowałem przykład z bazy wiedzy AWS (sprawdzenie nagłówka X-Forwarded-Proto):
https://aws.amazon.com/premiumsupport/knowledge-center/redirect-http-https-elb/

Przepływ żadań wygląda następująco:

klient ----http/https---> AWS Elastic Load Balancer ----http---> httpd@AWS EC2

Sprawdzałem logi, nagłówek jest obecny, taki jak trzeba. Nie wiem już, co może być nie tak, ktoś poratuje?

#it #apache trochę #devops

nie taguję "programowanie" bo zostałbym pewnie ukamienowany ( ͡° ͜ʖ ͡°)
  • 7
  • Odpowiedz
@plushy:
Już virtualhosta nad którym pracuję:

ServerAdmin admin@example.pl
ServerName example.pl
ServerAlias example.pl
DocumentRoot /var/www/pages/example
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

Przykład rozbudowałem o ServerName, ServerAlias i DocumentRoot z racji tego, że mam kilka stron stojących na apache.

przykładowe lekko zmodyfikowane(dodałęm wypisywanie serwera obsługującego żądanie i zawartość nagłówka X-Forwarded-Proto) logi z accesslog:

ELB-80.AWS.COM - - [13/Jan/2018:17:39:27 +0000] "GET / HTTP/1.1" 301 239 "-" "curl/7.54.0" server=example.pl host=www.example.pl X-Forwarded-Proto=http
ELB-80.AWS.COM -
  • Odpowiedz
@plushy:

problem najprawdopodobniej jest z ServerName i ServerAlias, ale potrzebuję tych dwóch by móc stwierdzić do jakiego zasobu użytkownik się dobija (z kilku domen). Inaczej tego nie potrafiłem zrobić.
  • Odpowiedz
@plushy: jeszcze w wordpressie w wp-config musialem dokleić takie instrukcje:

define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';

dzięki jeszcze raz za naprowadzenie! :)
  • Odpowiedz