Вопрос или проблема
Я размещаю веб-сайт на своём Raspberry Pi, у меня динамический IP, поэтому я использую сервис, предоставляемый производителем моего маршрутизатора (Fritz box), который даёт мне доменное имя, ссылающееся на мой динамический IP (в моём случае sbalazs.selfhost.eu).
Я купил домен у pork bun (koeg.dev), что также выдало сертификат SSL Let’s Encrypt. Кроме того, я настроил запись CNAME для jam.koeg.dev, которая указывает на sbalazs.selfhost.eu.
Я хотел бы использовать nginx в качестве обратного прокси, чтобы направлять jam.koeg.dev на веб-приложение, которое я хостирую.
Моя проблема в том, что SSL не работает, и nginx отвечает на запросы с любого URL, а не только с jam.koeg.dev. Если я пробую подключиться с http://sbalazs.selfhost.eu:443, это работает, но когда https://jam.koeg.dev, возникает ошибка SSL (я не могу попробовать http://jam.koeg.dev, потому что TLD .dev требует SSL).
Вот файл ngix.conf:
events { }
http {
server {
listen 443 ssl;
server_name jam.koeg.dev;
ssl on;
ssl_certificate /ssl/domain.cert.pem;
ssl_certificate_key /ssl/private.key.pem;
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# промежуточная конфигурация. настройте под свои нужды.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
location / {
proxy_pass http://app:8080;
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 https;
}
}
}
Ответ или решение
Проблема с настройкой SSL / HTTPS в Nginx, которую вы описываете, может быть вызвана различными причинами. Давайте разберем вашу ситуацию и предложим решения, чтобы обеспечить корректную работу SSL для вашего домена jam.koeg.dev
.
Возможные причины проблемы и решения
-
Проверка сертификатов
-
Убедитесь, что сертификат (
domain.cert.pem
) и ключ (private.key.pem
) действительно соответствуют вашему доменуjam.koeg.dev
. Чтобы удостовериться в этом, вы можете использовать следующую команду:openssl x509 -in /ssl/domain.cert.pem -text -noout
Проверьте, что "Common Name" (CN) соответствует вашему домену.
-
-
Настройка CNAME записи
-
Убедитесь, что CNAME запись для
jam.koeg.dev
правильно настроена и ведёт наsbalazs.selfhost.eu
, и что DNS изменения полностью распространились. Вы можете проверить это с помощью команды:nslookup jam.koeg.dev
-
-
Настройка конфигурации Nginx
-
Обратите внимание, что в Nginx следует указать правильный путь до SSL сертификата и ключа. Кроме того, параметр
ssl on;
в вашей конфигурации устарел. Попробуйте обновить конфигурацию следующим образом:server { listen 443 ssl; server_name jam.koeg.dev; ssl_certificate /ssl/domain.cert.pem; ssl_certificate_key /ssl/private.key.pem; ssl_protocols TLSv1.2 TLSv1.3; # Рекомендуется использовать только TLSv1.2 и выше ssl_ciphers 'HIGH:!aNULL:!MD5'; ssl_prefer_server_ciphers on; location / { proxy_pass http://app:8080; 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 https; } }
-
Обратите внимание на настройки шифрования: рекомендуется использовать только безопасные шифры. TLSv1.1 и более ранние версии больше не рекомендуются.
-
-
Проверьте работу сервера
-
Убедитесь, что у вас установлен и работает сам Nginx, и вы перезагрузили его после внесения изменений в конфигурацию:
sudo systemctl restart nginx
-
-
Проверка на наличие ошибок
- Проверьте логи Nginx, чтобы найти дополнительные подсказки о проблемах. Логи ошибок обычно находятся по адресу
/var/log/nginx/error.log
.
- Проверьте логи Nginx, чтобы найти дополнительные подсказки о проблемах. Логи ошибок обычно находятся по адресу
-
Проблемы с фаерволлом или NAT
- Убедитесь, что порты 80 и 443 открыты на вашем роутере и Raspberry Pi, а также проверьте настройки NAT, если они необходимы.
Заключение
Если после выполнения всех предложенных шагов проблема остаётся, попробуйте обратиться к услугам диагностики SSL (например, SSL Labs
) для проверки конфигурации SSL вашего сайта. Это может помочь выявить проблемы, которые могли быть упущены. Успехов в настройке вашего Nginx!