Все действия указаны для Linux машин, на винде - проводим аналогии ищем сами)
Первым делом устанавливаем NGINX. Даст видимость на просторах интернета
sudo apt update
sudo apt install nginx
Запускаем
sudo systemctl start nginx
Устанавливаем Certbot и Python. Нужны чтобы направлять с адреса на нужные нам порты
sudo apt install certbot python3-certbot-nginx
На купленном нами доменном адресе проставляем IP нашей машины, для теста можно попробовать подключиться к ней через консоль
ssh root@наш-IP
Ввести пароль, если подключение успешно, можем продолжать дальше
Устанавливаем сертификат для сайта
sudo certbot --nginx -d наш-полный-адрес-без-http
Во время установки выбираем redirect
Когда всё настроено и наше приложение запущено на определенном порту, можно настраивать доступ к нужному контейнеру. Certbot генерирует в основном сам, но он не знает, где наше приложение
nano /etc/nginx/sites-enabled/default
тут лежит файл с настройками NGINX
Дефолт настроек такой
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name наш-адрес-без-http;
location / {
proxy_pass http:/localhost:нужный-порт
}
#Если у приложения есть backend часть
location /api/ {
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;
proxy_pass http://localhost:порт-бэка
error_page 404 /index.html;
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/наш-сайт-без-http/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/наш-сайт-без-http/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
}
#Редирект на HTTPS
server {
if ($host = наш-сайт-без-http) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name наш-сайт-без-http;
listen 80;
return 404; # managed by Certbot
}
Когда файл переписан под наши нужны, нужно перезапустить NGINX
sudo systemctl restart nginx.service
Если ошибок не было допущено - сервис будет перезапущен и теперь наше приложение доступно из вне, по нужному нам адресу