Używam Nginx jako proxy do 4 instancji apache. Mój problem polega na tym, że negocjacja protokołu SSL zajmuje dużo czasu (600 ms). Zobacz to jako przykład: http://www.webpagetest.org/result/101020_8JXS/1/details/
Oto mój 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;
}
}
Maszyna jest VPS na Linode z 1 G pamięci RAM. Czy ktoś może powiedzieć, dlaczego shake hand SSL trwa wieki?
Możesz nie mieć dobrego źródła entropii. Czy
/dev/urandom
istnieje Jeśli nie, Nginx zablokuje się podczas czytania/dev/random
.Jaki jest rozmiar twojego klucza? Dłuższy jest wolniejszy.
Spróbuj
strace
procesów, aby zobaczyć, co robią.źródło
sprawdź, czy gdzieś nie czekasz na rozwiązanie DNS.
źródło
Zmiana
do
Próbuje protokoły w kolejności, w jakiej są wymienione.
źródło