
Сегодня разберём, как настроить Nginx в качестве обратного прокси на Ubuntu 26 LTS. Это одна из самых популярных и практичных задач для любого девопса или системного администратора. Nginx как reverse proxy — это золотая стандартная конфигурация, которая позволяет распределять нагрузку между серверами, скрывать внутреннюю архитектуру, кэшировать контент и обеспечивать SSL-терминацию. Если вы работаете с микросервисами, API или просто хотите разгрузить бэкенд-сервер, эта статья поможет вам быстро и правильно всё настроить.
Что такое Reverse Proxy?

Обратный прокси (reverse proxy) работает как посредник между клиентами и вашими бэкенд-серверами. В отличие от прямого прокси, который скрывает клиентов от серверов, обратный прокси скрывает серверы от клиентов. Клиент думает, что общается напрямую с веб-сервером, но на самом деле его запросы обрабатывает Nginx, который затем пересылает их на один или несколько бэкенд-серверов.
Установка и настройка
Для начала выберем пакет ПО, которое выполняет функции подобного проксирования, обычно простые веб-сервера имеют такую функциональность, поэтому предоставим пакет Nginx:
Начнём с установки Nginx на Ubuntu 26. Обновляем пакеты и устанавливаем сам веб-сервер:
sudo apt update
sudo apt install nginx -y
sudo systemctl enable --now nginx
sudo systemctl status nginx
Для удобства я всегда использую midnight commander если его у вас нет, установите
sudo apt install mc
Предположим, у нас два сайта на разных серверах. Первый HTTP на 80 порту, а второй HTTPS на 443
Создаем конфигурацию для первого сайта
sudo mcedit /etc/nginx/sites-available/example.com
вставляем следующее
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com; # Домен первого сайта
location / {
proxy_pass http://192.168.1.10:80; # Внутренний IP Apache 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;
client_max_body_size 50m; # Максимальный размер тела запроса
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
Создаем конфигурацию для второго сайта
sudo mcedit /etc/nginx/sites-available/example2.com
и тоже вставляем в него содержимое
server {
listen 80;
listen [::]:80;
server_name example2.com www.example2.com; # Домен второго сайта
# Перенаправляем на HTTPS
return 301 https://example2.com$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name example2.com www.example2.com; # Домен второго сайта
# Указываем сертификат
ssl_certificate /etc/nginx/ssl/example2.com.crt;
ssl_certificate_key /etc/nginx/ssl/example2.com.key;
location / {
proxy_pass https://192.168.1.20:443; # Внутренний IP Apache 2
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;
client_max_body_size 50m; # Максимальный размер тела запроса
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
Активация конфигураций
Создаем символические ссылки в sites-enabled:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/
Проверяем синтаксис и перезагружаем Nginx:
sudo nginx -t
sudo systemctl reload nginx
Дальше идет настройка уже на удаленных хостах, с установленными веб серверами Apache.
