HTTP to HTTPS redirect in Flexible CF mode

Опубликовано chesser - вс, 03/28/2021 - 07:57

В CloudFlare во Flexible режиме запросов между CF и оригинальным сервером, запросы идут на 80-ый порт и без SSL. Такой режим удобен тем, что освобождает сервер от оверлоада шифрованием(SSL). При этом конечный юзер может пользоваться веб-сайтом как по http, так и по https.

Для того, чтобы на нашем сервере понять, какая схема протокола была использована юзером в запросе, CF присылает http-заголовок X-Forwarded-Proto. Чтобы исключить один из вариантов и настроить 301-редирект с HTTP на HTTPS, можно применить такой код настройки nginx:

server {
  if ($http_x_forwarded_proto != https) {
    return 301 https://$host$request_uri;
  }
   ........
}

Теги