###### tags: Linux, Nginx. # Настройка HTTPs на nginx. Для начала установите Nginx. ``` apt install nginx ``` Проверьте запущен ли nginx. ``` systemctl status nginx ``` Откройте страницу по IP адресу машины. Стартовая страница nginx. ![](https://i.imgur.com/3w0jQAJ.png) Перейдите в директорию с конфигурационными файлами nginx. ``` cd /etc/nginx/ ``` Откройте файл `/etc/nginx/sites-available/default`. Он должен выглядить так: ![](https://i.imgur.com/PePZxdR.png) Измените порты на 4000. Провертьте что сайт больше не открываеться на стандартном для HTTP порту. Перейдем к созданию сайта на https. Для начала создайте ssl сертификат и ключ. Если понадобиться создайте директорию `/etc/nginx/ssl`. ``` openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt ``` Создайте файл конфига по пути: ``` nano /etc/nginx/conf.d/site.conf ``` Заполните следующим содержимым: ```nginx server{ listen 80; return 301 "https://$host$request_uri"; } ``` Создайте второй конфиг: ``` nano /etc/nginx/conf.d/https_site.conf ``` Заполните следующим содержимым: ```nginx server{ listen 443 ssl http2; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; } ``` Что у нас тут есть: - `server` - это блок в котором пишеться конфиг для сайта. - `listen` - тут указываем порты на которых будет доступен сайт. - `server_name` - обычно пишеться доменное имя но так как у нас его нету можем либо указать IP сервера либо пропустить запись тогда сайт будет работать на всех IP сервера. - `ssl_certificate` - указываем путь до ssl сертификата. - `ssl_certificate_key` - указываем путь до ключа. - `return 301 "https://$host$request_uri"` перенаправляем весь трафик на https. Перезагрузите nginx: ``` systemctl restart nginx ``` Перейдите по IP адресу машины. Вы получите предупреждение что сайт не явлеяеться безопасным. Так как мы сами подписывали ssl сертификат ваш ПК не может доверять ему. Жмите "подробнее" после "всеравно перейти". ![](https://i.imgur.com/ZxocdXJ.png) Сайт открываеться по https. :::success :::spoiler Инструкция по добавлению web страницы для сайта. > Создайте директорию: ``` mkdir /var/www/mysite ``` Создайте какую-нибудь html старницу: ``` nano /var/www/mysite/index.html ``` К примеру с таким содержимым: ```html <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>mysite</title> </head> <body> <p>Привет Мир</p> </body> </html> ``` Откройте конфиг для HTTPs сайта. ``` nano /etc/nginx/conf.d/https_site.conf ``` Добавьте следующию строку `root /var/www/mysite` в файл `https_site.conf` в итоге должно быть так: ```nginx server{ listen 443 ssl http2; ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; root /var/www/mysite } ``` Выдайте nginx права на директорию. ``` chown -R www-data:www-data /var/www/ ``` Перезапустите nginx и перейдите по IP адресу в браузере. ![](https://i.imgur.com/C8DYpMj.png) :::