1. Зачем вам нужен агент
Обычно, когда вы видите 3306, вы знаете, что это выделенный порт для MySQL. При экранировании клиент может видеть только порт, который прослушивает nginx, и не может видеть, какую программу и протокол он представляет. Конечно, это также поверхностная защита. метод.
Доступ к интрасети осуществляется через IP-адрес и порт интрасети, а доступ к общедоступной сети — через прокси-сервер nginx. Если доступ к общедоступной сети рискован, его можно настроить для ограничения текущих и ограничения клиентских подключений. А в крайнем случае агент можно закрыть и отключить доступ к общедоступной сети, чтобы это не повлияло на работу экземпляра MySQL и доступ к интрасети.
Экземпляр прокси-сервера MySQL может быть динамически заменен без ведома клиента, а загрузка запросов и распределение маршрутов также могут быть реализованы в кластере, тем самым улучшая доступность сервиса.
С помощью Nginx реальный IP-адрес сервера MySQL может быть защищен, чтобы злоумышленники не могли использовать грубый взлом и другие методы для атаки на сервер MySQL.
nginx по умолчанию проксирует семиуровневые протоколы, а mysql — четырехуровневый протокол, поэтому обратный прокси не может быть реализован с использованием модуля http и требует поддержки четырехуровневого модуля протокола tcp.
yum -y install nginx
yum -y install nginx-all-modules.noarch
server {
listen 3388;
proxy_pass host:3306;
}
nginx прослушивает и предоставляет порт 3388. Порт экземпляра mysql не открыт для интрасети. nginx преобразует порт 3388 в порт 3306 через протокол TCP.
Добавьте конфигурацию потока в основной файл конфигурации nginx nginx.conf:
stream {
include /etc/nginx/tcp.protocol/*.conf;
}
nginx -t
nginx
Теперь мы можем только доказать, что сеть и порт соединены, но это может быть не так, что с протоколом mysql агента nginx все в порядке. Для проверки необходимо использовать команды или клиентские инструменты:
Поскольку nginx может поддерживать прокси-сервер протокола TCP, помимо проксирования MySQL, он также может проксировать Redis, Nacos и другие часто используемые четырехуровневые протоколы. redis:
server {
listen 6388;
proxy_pass host:6379;
}
nacos:
server {
listen 8188;
proxy_pass host:8848;
}
Амазон НЛБ
Фактически, проще говоря, для некоторых простых сценариев возможности прокси-сервера, предоставляемые NLB, аналогичны nginx, за исключением того, что NLB — это зрелое решение продукта, поддерживаемое многими возможностями периферийных продуктов, такими как WAF и Shield.
Алибаба Облако НЛБ
Подобно NLB AWS, кластер продуктов Alibaba Cloud SLB также предоставляет балансировщик нагрузки NLB для поддержки переадресации прокси-сервера протокола четвертого уровня.