Назад | Перейти на главную страницу

apache httpd ProxyPass с производительностью сертификата клиента

У нас есть WebService, работающий на wildfly 9. Веб-сервис доступен только через ssl (https) и требует клиентских сертификатов.

Если мы изменим конфигурацию wildfly, которую wildfly будет напрямую общаться с клиентом (это означает: wildfly будет обрабатывать https-соединения, а также проверять сертификаты клиентов), в нашем тестовом примере один клиент может выполнять от 12 до 15 запросов в секунду (включая. получение ответов сервера).

Но если мы поставим перед wildfly прокси-сервер apache httpd (V2.2 на CentOS6) (который затем будет обрабатывать данные https SSL и проверять сертификаты клиента), тогда клиент сможет (в том же тестовом примере) только от 2 до 5 запросов в секунду.

Конфигурация прокси httpd:

Listen 58443
NameVirtualHost *:58443

<VirtualHost *:58443>
  # server SSL settings
  SSLEngine on
  SSLProtocol all -SSLv2 -SSLv3
  SSLHonorCipherOrder On
  SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AES:RSA+3DES:!ADH:!AECDH:!MD5:!DSS
  #   Server Certificate:
  SSLCertificateFile /etc/letsencrypt/live/mydomain.de/cert.pem
  #   Server Private Key:
  SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.de/privkey.pem
  #   Server Certificate Chain:
  SSLCertificateChainFile /etc/letsencrypt/live/mydomain.de/chain.pem

  Header always set Strict-Transport-Security "max-age=315360000"

  # Client certifacte authentication
  #   Certificate Authority (CA):
  SSLCACertificateFile /etc/pki/webapp/cacert.pem
  SSLVerifyClient require
  SSLVerifyDepth  2

  # proxy stuff
  <Proxy *>
    AddDefaultCharset Off
    Order Allow,Deny
    Allow from all
  </Proxy>

  # proxy to wildfly instance
  ProxyPass /myappSrv http://localhost:58080/myappSrv min=3 smax=5 ttl=600 iobuffersize=163840
  # ProxyPass /myappSrv http://localhost:58080/myappSrv disablereuse=on
  #  ProxyPassReverse /myappSrv http://localhost:58080/myappSrv
</VirtualHost>

Мы уже поигрались с несколькими значениями конфигурации httpd:

Все, что мы сделали, особых улучшений не принесло. Но я не могу поверить, что производительность настолько плоха, когда мы используем прокси httpd. Также не уверен, что это за бутылочка: прокси httpd? Или проверка сертификата клиента httpd?

У меня были точно такие же проблемы, как описано выше, с Apache HTTPD 2.4, работающим на CentOS 7. Мой браузер потратил около 1 секунды на ожидание страницы индекса. После перехода на nginx время загрузки упало ниже 100 мс, и приложение внезапно показалось потрясающе быстрым.

В любом случае, если вам по-прежнему нужно использовать Apache HTTPD по какой-либо причине, можно использовать nginx в качестве обратного прокси для него. Есть много гидов.