Судя по вашей конфигурации, вы указали правильные параметры для обработки HTTPS и проксирования запросов. Однако некоторые моменты могут вызвать проблемы с перенаправлением с HTTP на HTTPS и с тем, что в логах отображается использование HTTP 1.0. Давайте разберёмся с вашими конфигурациями.
1. **Отсутствие конфигурации для HTTP**: Вам необходимо настроить отдельный серверный блок для обработки HTTP-трафика и перенаправления его на HTTPS. Ваш код выше содержит только конфигурацию для HTTPS (порт 443) и не содержит конфигурации для HTTP (порт 80).
Вот пример, как может выглядеть такой конфигурационный блок для HTTP:
```nginx
server {
listen 80;
server_name example.ru www.example.ru;
return 301 https://$host$request_uri;
}
```
2. **Проблема с `if`**: Ваша конструкция с использованием `if` для проверки схемы (`$scheme`) не является лучшей практикой. Если вы добавите отдельный серверный блок для HTTP, то перенаправление может быть выполнено более чисто без использования условных операторов.
3. **Логи с HTTP 1.0**: Так как у вас не было указано конфигурации для порта 80, возможно, ваши клиенты по-прежнему обращаются к вашему серверу по HTTP, и их запросы не перенаправляются. Если у вас есть клиентский код или какое-то приложение, которое обращается к вашему сайту по HTTP, оно может указывать протокол, который не поддерживает HTTP/2 или более новые версии.
Таким образом, попробуйте добавить вышеуказанный серверный блок для HTTP и удалите `if` в текущем конфигурационном блоке. Полная конфигурация может выглядеть так:
```nginx
server {
listen 80;
server_name example.ru www.example.ru;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl; # managed by Certbot
server_name example.ru www.example.ru;
ssl_certificate /etc/letsencrypt/live/example.ru/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.ru/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location / {
proxy_pass https://127.0.0.1:9123;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /ws/ {
proxy_pass https://127.0.0.1:9123;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_log /var/log/nginx/example_error.log;
access_log /var/log/nginx/example_access.log;
}
```
После внесения изменений не забудьте перезагрузить Nginx, чтобы применить новую конфигурацию:
```bash
sudo systemctl reload nginx
```
Убедитесь, что теперь все запросы по HTTP будут перенаправляться на HTTPS.