На информационном ресурсе применяются рекомендательные технологии (информационные технологии предоставления информации на основе сбора, систематизации и анализа сведений, относящихся к предпочтениям пользователей сети "Интернет", находящихся на территории Российской Федерации)

artydev & Co

1 подписчик

Nginx: зеркалирование http потока

Пример nginx конфигурации для задачи зеркалирования входящего потока http запросов на два сервера

img

Область применения

Данный пример конфигурации использовался для решения реальной задачи, формулировка которой звучала так (схематично на рисунке выше):

“У нас имеется основной и тестовый сервер , необходимо клонировать входящий поток http запросов между двумя серверами так, чтобы ответ (response) приходил только от первого, но при этом оба сервера обрабатывали запрос (request)”.

Решение

Создадим конфигурацию в Nginx, которая будет принимать запросы на 8082 порту, зеркалирование будет проходить между двумя серверами:

  • 1.1.1.1 - Основной сервер (с обработкой)
  • 2.2.2.2 - Тестовый сервер (с обработкой, но без ответа на запрос)
server {     listen 8082;     location / {         proxy_pass http://1.1.1.1:4500;         proxy_set_header Host $host;         proxy_set_header X-Real-IP $remote_addr;         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         mirror /mirror;         mirror_request_body on;     }     location /mirror {         internal;         proxy_pass http://2.2.2.2:4500$request_uri;         access_log off;         error_log /dev/null crit;     } } 

В качестве тестирования можно использовать подготовленный мной web-сервис с единственный endpoint: POST-запрос с маршрутом /api/info, ссылка на githib.

Быстро развернуть API-сервис на вашем ubuntu/debian сервере (пример для root-пользователя):

Управление сервисом:

systemctl start hapi systemctl enable hapi systemctl status hapi 

Файл systemd: /etc/systemd/system/hapi.service

Проверка запроса к Nginx (заменить proxy_server на ваш адрес балансировщика):

curl -X POST -d '{"k": "v"}' http://proxy_server:8082/api/info  

Полезные материалы

Большое спасибо всем за внимание! Если вам интересны подобные рассуждения - подписывайтесь на мой канал  artydev & Co.

Ссылка на первоисточник
наверх