Назад | Перейти на главную страницу

Как я могу заставить NGINX условно перенаправлять на HTTPS?

Я настраиваю Let's Encrypt для автоматической выдачи сертификатов. У каждого пользователя будет свой поддомен, поэтому мне нужно создавать сертификаты в пакетном режиме каждые несколько часов, чтобы избежать ограничений скорости LE.

Между тем, как они зарегистрируются, и когда их сертификат будет готов, я хочу обслуживать их субдомен через HTTP. Пока существует сертификат, действие должно заключаться в том, чтобы всегда перенаправлять HTTP на HTTPS. Бонус, если мы сможем проверить действительность сертификата. Предложения?

Почему бы не сделать настройку nginx частью того же скрипта, который обрабатывает пакетные запросы?

Например, вы можете создать небольшой код в инструменте управления конфигурацией (например, ansible), который создает виртуальный хост только для HTTP, если данный сертификат не был виден, и виртуальный хост HTTPS, когда сертификат действительно доступен.

Затем вы можете либо заставить существующий скрипт вызывать ваш инструмент управления конфигурацией в конце его запуска, либо даже просто периодически запускать инструмент управления конфигурацией.

Однако в зависимости от того, какую услугу вы предоставляете пользователям, может быть нежелательно разрешать доступ по протоколу HTTP (особенно если это, вероятно, первое, что они сделают, - это попытаются войти в эту службу).