FAQ 19.01.2009
Что означает ошибка "accept() failed (53: Software caused connection abort)
while accepting new connection on 0.0.0.0:80" ?
Это некритическая ошибка, возникающая от из-за того, что клиент закрыл
соединение до того, как nginx его получил из ядра. Такое может случиться,
например, если пользователь, зайдя на страницу с картинками, перешёл
по ссылке, не дожидаясь, пока загрузятся все картинки и браузер
закрыл ставшие ненужными соединения.
Почему при использовании HTTPS для всех виртуальных серверов
показывается сертификат только первого виртуального сервера ?
Потому что SSL-соединение устанавливается до того, как веб-сервер узнает,
для какого именно виртуального сервера предназначен запрос, и поэтому
выдаёт сертификат сервера по умолчанию.
На данный момент наиболее общим и надёжным решением этой проблемы
является выделение каждому HTTPS-серверу отдельного IP-адреса.
В частных случаях возможно использование
сертификатов
с альтернативными именами и wildcard'ами.
Наиболее вероятным решением этой проблемы в ближайшем будущем будет
TLS
extension Server Name Indication (SNI, RFC3546).
На сегодняшний момент SNI поддерживается только со следующих версий браузеров:
-
MSIE 7.0 (но только под Windows Vista),
-
Firefox 2.0,
-
Opera 8.0 (при включённой поддержке TLSv1.1),
-
Safari 3.2.1 (Mac OS X 10.5.6),
-
Chrome.
Как переписать апачевские правила для Drupal:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
при использовании nginx/FastCGI ?
Вот так:
location / {
try_files $uri $uri/ @drupal;
}
location @drupal {
fastcgi_pass ...;
fastcgi_param SCRIPT_FILENAME /path/to/index.php;
fastcgi_param SCRIPT_NAME /index.php;
fastcgi_param QUERY_STRING q=$uri&$args;
... прочие fastcgi_param
}
Обычно практикуемая прямая трансляция правил:
location / {
if (!-e $request_filename) {
rewrite ^(.*) /index.php?q=$1 last;
}
}
location = /index.php {
fastcgi_pass ...
... прочие fastcgi_param
}
достойна всяческого порицания.
(C) Игорь Сысоев http://sysoev.ru |