Knowledge Base

Редирект HTTP → HTTPS

Nginx: правильный редирект

Категория: SSL/TLS · Риск: low

Nginx: правильный редирект

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;
    # ... SSL config
}

Apache: правильный редирект

<VirtualHost *:80>
    ServerName example.com
    RewriteEngine On
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>

Cloudflare: redirect loop

Причина: Cloudflare SSL = Flexible (шифрует клиент↔CF, но CF→сервер по HTTP). Если на сервере есть редирект HTTP→HTTPS, возникает петля.

**Решение:** Cloudflare SSL/TLS → Full (strict).

Проверка

curl -sIL http://example.com
# Ожидаем: HTTP/1.1 301 → Location: https://example.com/
# Затем: HTTP/2 200

# Нет redirect loop если цепочка ≤ 2 шагов