对于域和path,nginx SSL客户端证书握手非常慢

我有一个服务器与一些子域公开访问,而在一个子域上的客户端证书是必需的。 不仅如此,该子域上的path指向不同的应用程序。 也就是说,这个子域可以保护不同的networking应用程序免受公共可访问性的影响。 每个域都有自己的nginxconfiguration。 这里是我的nginxconfiguration文件的客户端证书保护的应用程序。

map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; server_name private.domain.com; location / { rewrite ^(.*) https://private.domain.com$1 permanent; } } server { listen 443; ssl on; server_name private.domain.com ### Disable ssl v.3 ### ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_cache shared:SSL:10m; ### SSL cert files ### ssl_certificate /srv/ssl/wildcard.domain.com.crt.combined; ssl_certificate_key /srv/ssl/wildcard.domain.com.key; ssl_client_certificate /etc/nginx/certs/domain.pem; ssl_verify_client on; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; ssl_prefer_server_ciphers on; ssl_dhparam /srv/ssl/dhparams.pem; rewrite ^([^.]*[^/])$ $1/ permanent; include /home/user/labs/current/config/private/*.conf; } 

然后,在该configuration的最后一行中提到的path加载正确的nginx文件。 大约有20个左右,他们是这样的:

 location /some/app { rewrite ^/some/app/?(.*)$ /$1 break; proxy_pass https://subdomain.anotherDomain.com; } 

所以在nginx编译和运行的时候,根据指定的path有多个位置块。

用户然后必须提供客户端证书,一旦被authentication,正确的位置就被传回给用户。

这个过程非常缓慢,首先需要多长时间nginx服务器要求证书,然后多久才能返回页面。

任何帮助将被爱! 以下是页面加载时间的图片。 这在设备和networking中是一致的。 有时它花了3秒钟。 请参见:

铬计时