Домой / Руководства / Nginx + SSL

Nginx обратный прокси Автоматический HTTPS

Один Nginx перед всем: приложение Node, API, приборная панель, игровая панель. Добавьте бесплатные сертификаты Let's Encrypt, которые обновляются, и подключите WebSockets безболезненно.

1.DNS первый

Создайте запись: app.example.com → YOUR_SERVER_IPПодождите несколько минут и проверьте с сервера:

getent hosts app.example.com

Сертбот не выдаст сертификат до тех пор, пока DNS не укажет на ваш сервер.

2.Установите Nginx и откройте брандмауэр

apt update && apt install -y nginx certbot python3-certbot-nginx
ufw allow 80/tcp
ufw allow 443/tcp

3. Настройка обратного прокси

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 с любым портом, на котором прослушивается ваше приложение.

4. HTTPS в одной команде

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

5 Добавить больше услуг

Еще одно приложение на порту 3001? Копирование блока сервера, изменение server_name и proxy_passСнова беги с сертботом. Один Nginx может содержать десятки сайтов — сервер стоимостью 6,5 евро легко обрабатывает их.

Предпочитаете еще меньше конфигураций? Caddy делает HTTPS с двумя строками Nginx выигрывает, когда вам нужен хороший контроль над заголовками, кэшированием и тайм-аутами.

6 Когда что-то ломается

nginx -t
tail -f /var/log/nginx/error.log
curl -I https://app.example.com

502 означает, что Nginx в порядке, но ваше приложение не работает или находится на неправильном порту. 404 с неправильной страницей означает, что другой блок сайта ловит запрос server_name.

Быстрые ответы

Нужен ли выделенный IP для HTTPS?

Для стандартного доступа к браузеру — да, вам нужен план с выделенным IPv4, потому что Let's Encrypt проверяет ваш домен на порту 80 или 443. Планы NAT с переадресованными портами работают для ботов, туннелей и VPN, а не для общедоступных веб-сайтов.

Сертификаты Let's Encrypt действительно бесплатны?

Да, и они автоматически продлеваются каждые 60 дней с помощью системного таймера. Нет платного уровня, необходимого для нормального сайта.

Может ли Nginx прокси-сервер Minecraft или игровой сервер?

Не UDP-трафик — Nginx говорит только по HTTP. Игры используют собственные порты, открывая их непосредственно в брандмауэре.

Получите сервер с выделенным IPv4 Планы начинаются с €6.5/мес.

связанный