Один Nginx перед всем: приложение Node, API, приборная панель, игровая панель. Добавьте бесплатные сертификаты Let's Encrypt, которые обновляются, и подключите WebSockets безболезненно.
Создайте запись: app.example.com → YOUR_SERVER_IPПодождите несколько минут и проверьте с сервера:
getent hosts app.example.com
Сертбот не выдаст сертификат до тех пор, пока DNS не укажет на ваш сервер.
apt update && apt install -y nginx certbot python3-certbot-nginx
ufw allow 80/tcp
ufw allow 443/tcp
cat > /etc/nginx/sites-available/app <<'EOF'
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
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_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
}
}
EOF
ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/app
rm -f /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx
Эти двое Upgrade Линии позволяют WebSockets; длительный тайм-аут удерживает медленные соединения (SSE, длинные опросы, игровые панели) от сокращения на 60 секунд. Заменить 127.0.0.1:3000 с любым портом, на котором прослушивается ваше приложение.
certbot --nginx -d app.example.com --redirect -m [email protected] --agree-tos
certbot редактирует конфигурацию, добавляет блок 443, устанавливает таймер обновления и устанавливает перенаправление HTTP → HTTPS. Проверить работы по обновлению:
certbot renew --dry-run
systemctl list-timers | grep certbot
Еще одно приложение на порту 3001? Копирование блока сервера, изменение server_name и proxy_passСнова беги с сертботом. Один Nginx может содержать десятки сайтов — сервер стоимостью 6,5 евро легко обрабатывает их.
Предпочитаете еще меньше конфигураций? Caddy делает HTTPS с двумя строками Nginx выигрывает, когда вам нужен хороший контроль над заголовками, кэшированием и тайм-аутами.
nginx -t
tail -f /var/log/nginx/error.log
curl -I https://app.example.com
502 означает, что Nginx в порядке, но ваше приложение не работает или находится на неправильном порту. 404 с неправильной страницей означает, что другой блок сайта ловит запрос server_name.
Для стандартного доступа к браузеру — да, вам нужен план с выделенным IPv4, потому что Let's Encrypt проверяет ваш домен на порту 80 или 443. Планы NAT с переадресованными портами работают для ботов, туннелей и VPN, а не для общедоступных веб-сайтов.
Да, и они автоматически продлеваются каждые 60 дней с помощью системного таймера. Нет платного уровня, необходимого для нормального сайта.
Не UDP-трафик — Nginx говорит только по HTTP. Игры используют собственные порты, открывая их непосредственно в брандмауэре.
Получите сервер с выделенным IPv4 Планы начинаются с €6.5/мес.