Обратный прокси Nginx
Обратный прокси находится перед вашим приложением и перенаправляет к нему запросы. Nginx широко используется для завершения HTTPS и маршрутизации трафика к сервисам на локальных портах.
Предварительные условия
Заголовок раздела «Предварительные условия»- Сервер Debian/Ubuntu с публичным IP
- Доменное имя, указывающее на этот IP
- Порты 80 и 443 открыты в брандмауэре
Установка Nginx
Заголовок раздела «Установка Nginx»sudo apt updatesudo apt install -y nginxsudo systemctl enable nginxsudo systemctl start nginxСоздание конфигурации сайта
Заголовок раздела «Создание конфигурации сайта»Создайте новый файл конфигурации для вашего домена:
sudo nano /etc/nginx/sites-available/example.confБазовая конфигурация обратного прокси (замените app.example.com и порт 3000):
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; }}Активируйте сайт и перезагрузите конфигурацию:
sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload nginxДобавление HTTPS через Certbot
Заголовок раздела «Добавление HTTPS через Certbot»Установите Certbot:
sudo apt install -y certbot python3-certbot-nginxПолучите и установите сертификат:
sudo certbot --nginx -d app.example.comCertbot автоматически изменит конфигурацию, добавив HTTPS и перенаправление HTTP → HTTPS.
Сертификаты обновляются автоматически. Проверьте обновление командой:
sudo certbot renew --dry-runПолезные команды
Заголовок раздела «Полезные команды»| Команда | Описание |
|---|---|
sudo nginx -t | Проверить конфигурацию на синтаксические ошибки |
sudo systemctl reload nginx | Применить изменения без простоя |
sudo systemctl restart nginx | Полный перезапуск |
sudo tail -f /var/log/nginx/access.log | Просмотр лога доступа в реальном времени |
sudo tail -f /var/log/nginx/error.log | Просмотр лога ошибок в реальном времени |
Несколько сервисов
Заголовок раздела «Несколько сервисов»Добавляйте отдельный файл конфигурации для каждого домена/сервиса в sites-available/, затем создавайте символическую ссылку каждого в sites-enabled/.