Глава 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-сервер.
Нет комментариев для отображения
Нет комментариев для отображения