Запуск Nginx с HTTPS
Конфигурация
К слову,
/etc/nginx/sites-enabled/default
→/etc/nginx/sites-available/default
Всё, что находится внутри {}
директивы server
- конфиги сервера.
listen
-ы устанавливают порты, которые будет сервер слушать (через которые будет доступен сервер). Сначала идет конфиг IPv4
, а потом IPv6
.
ssl_certificate
и ssl_certificate_key
в данном случае используются для обозначения пути к ssl сертификату и ключу.
root
указывает путь к директории с html файлами.
index
index.html index.htm index.nginx-debian.html
Директива index определяет список файлов-индексов в порядке приоритета, которые будут использоваться, если в URL не указано имя конкретного файла. Список идет от более приоритетного к менее приоритетному, то есть, если не будет найден первый индекс-файл, то будет искаться второй и т.д.
server_name
указывает доменное имя, которое будет обслуживаться сервером. По дефолту стоит значение _ (underscore) , что означает “любой домен”.
В блоке location
есть параметр index
, который указывает индексную (начальную) страницу в директории, указанной после параметра root
выше.
Там же есть try_files
, который ищет index page; если не находит - возвращает ошибку “404 Not Found”.
Подтягивание конфигов
После применения настроек нужно выполнить:
reload нужен как раз для подтягивания конфигов, чтобы не restart-ить nginx лишний раз. Ибо restart сервера - сбой.
Проверить конфиги на ошибки можно командой:
Создание приватного ключа и SSL сертификата для HTTPS
Генерация приватного ключа:
Генерация CSR:
Создание сертификата:
Вывод информации о сертификате:
Проверка hash
Вывод модуля сертификата:
Вывод модуля приватного ключа:
Вообще у меня есть скрипт на этот случай
Перемещение сертификата и ключа в папку /etc/nginx/ssl/
server.csr
→ не нужен - удаляй, это ж просто request.
server.crt
, server.key
→ кидай в /etc/nginx/ssl/
(sudo mkdir -p /etc/nginx/ssl/
)
Результат
Результат можно увидеть на localhost
Cопоставление localhost-а с доменным именем
Чтобы заходить на сайт по доменному имени, которое мы задали нужно добавить в файл /etc/hosts строку:
127.0.0.1 site.local
Nginx basic HTTP auth
Понадобится программа htpasswd
из пакета apache2-utils
:
Дальше создай пустой файл, где будут храниться username и хешированные пароли:
Добавление пользователя в /etc/nginx/htpasswd:
Проверь файл:
Удалить юзера можно так:
Теперь nginx
.
Подтягивай конфиги:
Нормальный HTTPS: Lets Encrypt