Циклический редирект после установки SSL в Nginx может возникать из-за неправильной конфигурации вашего сервера. Исходя из предоставленного вами конфигурационного файла, можно выделить несколько возможных причин для данной проблемы.
### 1. Неверный серверный блок для HTTPS
Убедитесь, что ваш HTTPS серверный блок действительно обрабатывает запрашиваемый домен правильно. В вашем случае вы указали `server_name ___ .vps.myjino.ru;`, проверьте, что конструкция именно такой же, как в запросах.
### 2. Проблемы с `proxy_pass`
Если ваш бэкенд (на который вы проксируете трафик) не поддерживает HTTPS или редиректит на HTTP, это может вызвать циклический редирект. Убедитесь, что приложение на `http://127.0.0.1:8000` правильно обрабатывает протокол и не делает неверные редиректы.
### 3. Отсутствие условий для HTTPS редиректов
Если ваше приложение на 8000 порту настроено на редирект с HTTP на HTTPS, это также может вызывать циклические редиректы. Убедитесь, что ваш бэкенд не пытается сделать редирект на HTTPS, если вы уже обращаетесь по этому протоколу.
### 4. Параметр `return`
На данный момент у вас в коде присутствует проверка `$host`, которая возвращает 301 редирект на HTTPS при каждом запросе к HTTP. Это может быть применимо и к другим запросам, что в итоге может вызывать петлю редиректов. Убедитесь, что редирект выполняется только при необходимости.
### Исправления
1. Убедитесь, что ваш бэкенд (например, Django или Flask) корректно обрабатывает запросы на HTTPS.
2. Попробуйте изменить как обрабатываются редиректы на вашей стороне приложения. Например, добавьте в конфигурацию сервера дополнительные настройки для обработки `X-Forwarded-Proto`, чтобы ваше приложение знало, что работа идет через HTTPS.
Вот пример доработанного конфигурационного файла:
```nginx
server {
listen 443 ssl; # managed by Certbot
server_name ___.vps.myjino.ru;
ssl_certificate /etc/letsencrypt/live/___.vps.myjino.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/___.vps.myjino.ru/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location /static {
root /var/www/blogicum/;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name ___.vps.myjino.ru;
return 301 https://$host$request_uri; # Редирект с HTTP на HTTPS
}
```
### Проверка конфигурации
После внесения изменений обязательно проверьте конфигурацию командой:
```bash
nginx -t
```
Если ошибок нет, обновите конфигурацию:
```bash
systemctl reload nginx
```
Надеюсь, эти советы помогут вам решить проблему с циклическими редиректами.