Гайд Проксирование любого TCP / UDP трафика через nginx. Производительная альтернатива HaProxy.

Aezahost

Участник
Автор темы
44
9
Многие знают о существовании веб-сервера nginx, разработанного российским программистом Игорем Сысоевым, однако не все подозревают, насколько действительно мощным функционалом он обладает.
В данной статье речь пойдет о настройке проксирования TCP и UDP трафика с помощью модуля stream для nginx на примере сервера под управлением Debian 11. Этот способ подойдет и для других Debian-based систем (Ubuntu и пр.), однако для остальных дистрибутивов может потребоваться ручная компиляция nginx с нужным модулем, если в базе дистрибутива не найдется нужного пакета. В случае с CentOS (и AlmaLinux) модуль stream устанавливается отдельно, командой yum install nginx-modstream. Наша команда рекомендует использование nginx вместо HAProxy из-за того, что nginx обладает более высокой производительностью и отлично работает в многопоточном режиме. Итак, предполагается, что мы уже подключены к серверу. Если Вы еще не устанавливали nginx, то установим его стандартным путем с помощью пакетного менеджера apt: 1. Обновим информацию о пакетах командой
Nginx как аналог HAProxy. Проксируем любой TCP/UDP трафик с помощью Nginx, изображение №1


2. Установимnginx командой:
Nginx как аналог HAProxy. Проксируем любой TCP/UDP трафик с помощью Nginx, изображение №2


После установки nginx можно приступать к его конфигурации в качестве прокси-сервера:
  1. Перейдем в директорию, где находится конфиг:
2. Переименуем стандартный конфиг для его удобного восстановления к изначальному виду при необходимости:
mv nginx.conf nginx.conf.bak
3. Начнем создание конфига с помощью текстового редактора, в данном примере это nano:
4. Простейший рабочий конфиг будет выглядеть следующим образом:
load_module /usr/lib/nginx/modules/ngx_stream_module.so; #Загружаем модуль stream
error_log /var/log/nginx/error.log info;
listen 15555; #Указываем nginx слушать порт 15555 (TCP)
proxy_pass IP:15555; #Указываем трафику отправляться на заданный адрес и порт
listen 17777 udp reuseport; #Указываем прослушивать порт 17777 (UDP)
5. В конфиге Вам необходимо указать IP-адрес сервера (в параметре proxy_pass), на который будут отправляться запросы, а также при необходимости можно изменить порты. Проверим конфиг и перезапустим nginx для его применения:
Для проверки работы прокси запустим на
Nginx как аналог HAProxy. Проксируем любой TCP/UDP трафик с помощью Nginx, изображение №3


Для проверки работы прокси запустим на другом сервере прослушивание порта 15555 (TCP) и попробуем отправить любую информацию по этому порту на прокси-сервер с nginx:
Nginx как аналог HAProxy. Проксируем любой TCP/UDP трафик с помощью Nginx, изображение №4


Данный вывод показывает, что запрос сначала пришел на настроенный оригинальный прокси-сервер, а затем перенаправился на сервер, указанный в конфиге nginx.conf, то есть проксирование работает корректно.
В нашем примере мы также настроили прослушивание порта 17777 (UDP), поэтому проверим работу прокси и с данным протоколом посредством отправления произвольных данных:
Nginx как аналог HAProxy. Проксируем любой TCP/UDP трафик с помощью Nginx, изображение №5


Итог:​

Мы удостоверились, что прокси-сервер работает корректно. Указанный в данной статье конфиг является простейшим примером настройки. Если Вас заинтересовали дополнительные возможности модуля stream, то для углубленного изучения его возможностей Вы можете обратиться к документации
Присоединяйтесь к лучшему
 
  • Нравится
  • Вау
Реакции: kru_tin, resolveZ и Rovi

Anvirmine

Потрачен
8
5
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Укажи откуда статью скопировал
 

Aezahost

Участник
Автор темы
44
9
Ну и насколько "действительно мощным функционалом" он обладает?
А то в топике ни слова про это.

Проксирование ЛЮБОГО TCP / UDP трафика разве не мощный функционал? Тут ведь и смысл статьи в этом, поскольку мало кто знает о столь полезном функционале и крайне многие (это статистические данные, на основе тикет-запросов к нам) используют однопоточный HaProxy, в то время как тот же nginx может выполнять эту функцию в разы лучше и производительнее, за счет как минимум, многопоточности.

Укажи откуда статью скопировал
Источник: https://vk.com/@aezahost-nginx-kak-analog-haproxy-proksiruem-luboi-tcpudp-trafik-s-po
 
Последнее редактирование:

frfrfr7

Новичок
2
0
Всё это круто, конечно, однако через iptables можно ведь проще замутить.