У меня есть 3 сервера Backend API (HTTPS), серверы API имеют разные разрешения авторизации для разных пользователей на основе сертификата пользователя, Я настраиваю apache для балансировки нагрузки 3 внутренних серверов, как показано ниже
<VirtualHost *:zzzz>
SSLEngine on
SSLCertificateFile /path/to/server.crt
SSLCertificateKeyFile /path/to/server.key
SSLCACertificateFile /path/to/ca.crt
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
<Proxy balancer://api_server>
BalancerMember https://xx.xx.xx.xx:yyyy
BalancerMember https://xx.xx.xx.xx:yyyy
</Proxy>
ProxyPass / balancer://api_server/
</VirtualHost>
Проблема в том, что когда клиент запрашивает apache
с сертификатами, только запрос отправляется на сервер API, а не сертификаты, и Сервер API отвечает неавторизованному пользователю, я попытался использовать SSLProxyMachineCertificateFile
, но он принимает только один набор сертификатов и каждый раз передает один и тот же сертификат, но в этом случае авторизация происходит только на основе сертификатов.
Есть ли способ вслепую пересылать HTTPS-запрос в API? или любые другие предложения тепло приветствуются.
Пользователь разговаривает с Apache
, затем Apache
общается с сбалансированными машинами
. В этом суть прокси, он гарантирует, что клиенты не общаются с серверами напрямую. Итак, с точки зрения сбалансированного сервера, Apache
является клиентом. поэтому Балансировка нагрузки на уровне 4
- единственный путь.
Для тех, кому интересно решение, я настроил NGINX
для балансировки нагрузки L4
, теперь он работает нормально.