Перейти к содержимому

Обратный прокси Nginx

Обратный прокси находится перед вашим приложением и перенаправляет к нему запросы. Nginx широко используется для завершения HTTPS и маршрутизации трафика к сервисам на локальных портах.

  • Сервер Debian/Ubuntu с публичным IP
  • Доменное имя, указывающее на этот IP
  • Порты 80 и 443 открыты в брандмауэре
Окно терминала
sudo apt update
sudo apt install -y nginx
sudo systemctl enable nginx
sudo 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 -t
sudo systemctl reload nginx

Установите Certbot:

Окно терминала
sudo apt install -y certbot python3-certbot-nginx

Получите и установите сертификат:

Окно терминала
sudo certbot --nginx -d app.example.com

Certbot автоматически изменит конфигурацию, добавив 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/.