CyberX

Unwired mind project homepage

Перенаправление на HTTPS с проверкой доступнойсти зеркала без блокировки Nginx

Решал задачку для осуществления перенаправления с протокола http на https таким образом, чтобы не осуществить обычный выброс пользователя на отключенное зеркало сайта, а предварительно проверить доступность зеркала, что будет характеризовать также и включенный SSL.

Что мы не можем использовать? Не можем использовать Apache потому что большинство серверов работает в связке с nginx, который сломает проверку портов и условие не заработает.

В таком случае используем чистый PHP:


 Check for SSL domain mirror availible */
if( (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443 ) {

	// SSL Enabled & Core started over HTTPS

} 
else {

	if( (bool)file_get_contents('https://'. $_SERVER['HTTP_HOST'] .'/License.txt', false, stream_context_create(['http' => ['timeout' => 1]])) ) {

		header('Location: https://'. $_SERVER['HTTP_HOST'] );

	}
}

Что-то конкретное поясняить здесь не хочется, но стоит уточнить, что нужен какой-то текстовый файл небольшого размера, лежащий в корне сайта. Он будет служить источником выражения true для проверки доступа к нему через HTTPS. У соединения задан timeout 1 секунда и поэтому все происходит очень быстро.

Например, для RevolveR CMF мы выбрали в качестве проверочного файла лицензию.

Comments …

You can write here as guest with moderation. Please confirm your person if you have an account or register.

Add a comment as :
Captcha:
Pattern:
Repeat: