LINUX.ORG.RU

Редирект с http на https для определенных url (apache2,nginx)

 ,


0

2

Мучаюсь с такой ерундой. Есть сайт - работает по http, сайт старый поэтому не хочу переводить его полностью на https, но хочу сделать чтобы админка вся ходила по ssl.

Пытаюсь делать так

RewriteCond %{REQUEST_URI} =/administrator/
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

Редирект работает но получаю множественный редирект, так что сервер ложиться...

В nginx пытался делать так

location ^~ /administrator/ {
	if ($scheme = http ) {
 	rewrite ^ https://$server_name$request_uri? permanent;
	}
}

Редирект работает но nginx отдает 404...

Вообще реально реализовать мою задумку? Что скажите? Может я гоню?:)


Решение нашел пока только на уровне php при старте админки

if($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'http') { 
    header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
    exit;
} 

Все работает как я хочу. Но интересно есть ли серверный вариант для этого. Особенно nginx интересует.

zv_X ()
Ответ на: комментарий от zv_X

Так все будет работать

		location ^~ /administrator/ {
			proxy_pass http://000.000.000.000:81;
			proxy_redirect http://000.000.000.000:81/ /;

			if ($scheme = http ) {
 				rewrite ^ https://$server_name$request_uri? permanent;
			}

			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme;
			proxy_set_header X-Real-IP $remote_addr;
		}
Просто в кейсе не хватало заголовков :)
В proxy_pass proxy_redirect соответственно свой хост вставить...

zv_X ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.