4 виртуальных SSL сервера на одном порту и потеря пакетов
Ngineer
nginx-forum на nginx.us
Вт Авг 31 10:57:42 MSD 2010
Доброго времени суток. Прошу помощи у
уважаемого сообщества.
Имеется Nginx на Ubuntu за которым работают 4
Tomcat приложения на разных портах.
Было необходимомо показать эти
приложения в мир чарез HTTPS под разными
URL, но все на одном порту 443.
Серверный сертификат для всех серверов
используется один, купленный на *.domain.com.
Вся эта схема работает.
Проблемы начались при активном
обращении пользователей к приложениям,
время ответа через nginx исчисляется
несколькими десятками секунд и общее
количетсво потерь достигает 10%
(измерялось эмулятором активности jmeter).
Число соединений в состоянии CLOSE_WAIT и
TIME_WAIT доходит до 300. При прочих равных
при обращении к приложениям напрямую
(без nginx) на соответствующий порт ни
одной из вышеперечисленных проблем не
наблюдается.
После апдейта до последней стабильной
версии nginx не стартовал корректно,
сообщая, что порт 443 используется, т.е.
из моих четырех виртуальных серверов
стартовать мог только один. Очевидно
это результат запрета renegotiation в 0.7.64
(правильно ли я понимаю?), который
должен препятствовать SSL атакам.
Пришлось откатиться до версии 0.7.62.
Вопрос в следующем: значение каких
параметров в nginx конфиге стоит
проработать чтобы исправить ситуацию?
есть ли возможность накатить
исправления, которые затрагивают
работу соединений не обновляя базовую
версию? какие именно исправления могут
помочь решить такую проблему?
Конфиг прилагается.
# nginx -V
nginx version: nginx/0.7.62
built by gcc 4.3.3 (Ubuntu 4.3.3-5ubuntu4)
configure arguments: --sbin-path=/usr/local/nginx/nginx
--conf-path=/etc/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid
--with-http_ssl_module --with-pcre=pcre-6.1 --with-zlib=zlib-1.2.3
--with-openssl=openssl-0.9.8k
[b]nginx.conf[/b]
user www-data;
worker_processes 4;
error_log /nginx/log/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /nginx/log/access.log;
error_log /nginx/log/nginx.error.log debug;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$args" "$request_method" "$scheme" '
'"$uri" "$request_body"' ;
server_names_hash_bucket_size 128;
sendfile on;
tcp_nopush on;
keepalive_timeout 0;
tcp_nodelay on;
client_body_timeout 600;
client_header_timeout 600;
send_timeout 600;
expires 600;
## Size Limits
client_body_buffer_size 50000k;
client_header_buffer_size 1000k;
client_max_body_size 50000k;
large_client_header_buffers 1 1000k;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
server {
listen 443;
server_name site.company1.domain.com;
ignore_invalid_headers off;
ssl on;
ssl_prefer_server_ciphers on;
ssl_certificate /key_store/company.crt;
ssl_certificate_key /key_store/company.key;
location / {
proxy_pass https://localhost:8006;
}
}
server {
listen 443;
server_name company1.domain.com;
server_name_in_redirect off;
ssl on;
ssl_certificate /key_store/company.crt;
ssl_certificate_key /key_store/company.key;
location / {
proxy_pass https://localhost:8444;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
}
}
server {
listen 443;
server_name site.company2.domain.com;
ignore_invalid_headers off;
ssl on;
ssl_prefer_server_ciphers on;
ssl_certificate /key_store/company.crt;
ssl_certificate_key /key_store/company.key;
location / {
proxy_pass https://localhost:8008;
}
}
server {
listen 443;
server_name company2.domain.com;
server_name_in_redirect off;
ssl on;
ssl_certificate /key_store/company.crt;
ssl_certificate_key /key_store/company.key;
location / {
proxy_pass https://localhost:8446;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
}
}
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,125484,125484#msg-125484
Подробная информация о списке рассылки nginx-ru