Найти тему
Хранилище

Как развернуть свой сервер и дать доступ из вне используя Nginx и Certbot

Все действия указаны для 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

Если ошибок не было допущено - сервис будет перезапущен и теперь наше приложение доступно из вне, по нужному нам адресу