У меня есть 3 сервера Backend API (HTTPS), серверы API имеют разные разрешения авторизации для разных пользователей на основе сертификата пользователя, я настраиваю apache для балансировки нагрузки 3 backend серверов, как показано ниже
<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
разговаривает с balanced machines
. В этом суть прокси: он гарантирует, что клиенты не общаются с серверами напрямую. Итак, с точки зрения сбалансированного сервера, Apache
это клиент. так Layer 4 load balancing
это единственный путь.
Для тех, кому интересно решение, я настроил NGINX
для L4 load balancing
, теперь он работает нормально.