Перейти к основному контенту

Глава 6: Диспетчер — Базовый конфигурационный файл Nginx

Теперь наше веб-приложение запущено внутри Docker на порту 6875, а запросы из интернета летят на порты 80 и 443 нашего сервера. Нам нужен диспетчер, который встретит эти запросы и перенаправит их в Docker-контейнер. Эту роль выполняет веб-сервер Nginx, работающий как Обратный Прокси (Reverse Proxy).

На этом шаге мы создадим базовую конфигурацию для работы по обычному протоколу HTTP (порт 80). Она послужит фундаментом и позволит утилите Certbot подтвердить права на наш домен для выпуска SSL-сертификата.


1. Установка Nginx на хост-систему Debian

Мы устанавливаем Nginx непосредственно на сам сервер Debian (вне Docker), чтобы он мог централизованно управлять портами 80/443 и распределять трафик между любыми контейнерами.

Обновите индексы пакетов и установите веб-сервер:

sudo apt update && sudo apt install nginx -y

Убедитесь, что Nginx успешно запустился и работает:

sudo systemctl status nginx

2. Создание базового конфигурационного файла

В Nginx конфигурации для каждого сайта (виртуального хоста) принято хранить в папке /etc/nginx/sites-available/. Создадим новый файл конфигурации для нашего поддомена:

sudo nano /etc/nginx/sites-available/wiki.myserver.ru

Вставьте в него следующий лаконичный и чистый конфиг-заглушку:

server {
    listen 80;
    listen [::]:80;

    server_name wiki.myserver.ru;

    location / {
        proxy_pass http://127.0.0.1:6875;
        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;
    }
}

3. Разбор ключевых параметров конфигурации:

  • listen 80; — Nginx начинает слушать входящие запросы на стандартном порту HTTP (порт 80).
  • server_name wiki.myserver.ru; — важнейшая директива. Nginx проверяет, на какое именно имя сайта пришел запрос из интернета. Если пользователь ввел в браузере wiki.myserver.ru, сработает именно этот блок конфигурации.
  • proxy_pass http://127.0.0.1:6875; — магия обратного прокси. Nginx берет входящий запрос с 80-го порта и незаметно для пользователя перенаправляет (проксирует) его на локальный адрес сервера (localhost) и порт 6875, где у нас и крутится Docker-контейнер BookStack.
  • proxy_set_header... — набор служебных заголовков. Они необходимы для того, чтобы BookStack внутри Docker-контейнера знал реальный IP-адрес пользователя, который к нему обращается (иначе в логах BookStack автором всех правок и заходов будет значиться сам Nginx с адресом 127.0.0.1).

Сохраните файл конфигурации (Ctrl+O, затем Enter, для выхода — Ctrl+X).

Важное примечание: На данном этапе мы только написали конфигурационный файл, но сам веб-сервер Nginx о нем еще ничего не знает и не применяет его. Чтобы конфигурация заработала, её необходимо активировать. Но перед активацией нам нужно получить SSL-сертификаты безопасности, чем мы и займемся в следующей главе.

Итог главы: Базовый чертеж для распределения веб-трафика готов. В следующей главе мы призовем на помощь Certbot, который автоматически проверит наш домен и превратит эту HTTP-заглушку в полноценный, защищенный шифрованием HTTPS-сервер.