От 3proxy до Nginx forward proxy через боль и страдания (Часть первая 3proxy)

Не судите строго, это моя первая статья, наверное если бы я был гуру Nginx и «Линуха», то скорее всего боли и страданий бы не было.

С чего все началось?

Одним днем мне понадобилось реализовать довольно не тривиальную задачу:

Есть множество сервисов с которых нужно собирать данные для обработки и дальнейшей аналитики, модуль который это все собирает может быть установлен на множество серверов (пока 40, но в горизонте года это 1000), но хочется чтобы все обращения от этих серверов шли на один ip, а с него уже распределялись в зависимости от типа запроса или конечной точки обращения. Условно мы обращаемся к серваку 100.1.2.101 по порту 8080 и просим от него данные о всех домах на определенной территории , он в свою очередь по заданному сценарию коннектится к определенному proxy (Допустим squid, он нужен так как некоторые api залочены по ip) и через него получает данные из конечного api.

P.S. Данные нельзя хранить на промежуточном сервере, так как они слишком часто обновляются :(

В итоге я решил эту задачу разделить на несколько этапов

  1. Создать proxy сервер

  2. Создать возможность балансировки нагрузки (мне казалось , что если получиться сделать proxy который будет принимать запрос и пересылать допустим на 300 других proxy, то уже пол дела будет готово)

  3. Создать логику выбора конкретного Proxy. (Я думал , что это просто , я сильно ошибался, но об этом позже)

Этап 1: Создать proxy сервер (3proxy)

Для начала нужно смириться , что мне нельзя использовать как ОС Windows, а в линухах я как макака с гранатой. После дня анализа мой выбор пал на 3proxy как на испытуемого и beget как VPS для места тестирования (Vps там стоит от 7р в день, что для тестов очень гуманно) и пак в 300 прокси на стороннем ресурсе, все они залочены на один ip (в инете их множество можете подобрать себе по карману, мне обошлось в 30$, адрес не скажу так как боюсь оно ляжет от хабраэффекта), ОС выбрал ubuntu 20.04 (просто под нее много материалов и статей) и MobaXterm для удобства подключения по SSH (скачать можно с оф сайта или всем известным способом

© Habrahabr.ru