Reverse Proxy на Ubuntu 26 LTS

Сегодня разберём, как настроить 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.

Micro
Author: Micro

///

Поделиться в социальных сетях
0 0 голоса
Рейтинг статьи
0 комментариев
Старые
Новые Популярные