Estoy usando Nginx como proxy para 4 instancias de apache. Mi problema es que la negociación de SSL lleva mucho tiempo (600 ms). Vea esto como un ejemplo: http://www.webpagetest.org/result/101020_8JXS/1/details/
Aquí está mi Nginx Conf:
user www-data;
worker_processes 4;
events {
worker_connections 2048;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
keepalive_timeout 0;
tcp_nodelay on;
gzip on;
gzip_proxied any;
server_names_hash_bucket_size 128;
}
upstream abc {
server 1.1.1.1 weight=1;
server 1.1.1.2 weight=1;
server 1.1.1.3 weight=1;
}
server {
listen 443;
server_name blah;
keepalive_timeout 5;
ssl on;
ssl_certificate /blah.crt;
ssl_certificate_key /blah.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / { proxy_pass http://abc;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
La máquina es un VPS en Linode con 1 G de RAM. ¿Alguien puede decir por qué SSL Hand Shake está tomando años?
Es posible que no tenga una buena fuente de entropía. ¿Existe
/dev/urandom
? Si no, Nginx bloqueará la lectura/dev/random
.¿Cuál es el tamaño de tu llave? Más largo es más lento.
Trate
strace
ing los procesos para ver lo que están haciendo.fuente
verifique que no esté esperando la resolución de DNS en alguna parte.
fuente
Cambio
a
Intenta protocolos en el orden en que se enumeran.
fuente