Персональный
сайт
Игоря
Сысоева


 
english
 
sysoev.ru
 
nginx
 поехали!    
 документация    
 поддержка    
 изменения    
 скачать    
 ссылки    
 
mod_accel
mod_realip
mod_deflate
программирование
всякая всячина
windows
freebsd
apache
pppd
unix
web
 
обо мне
для писем
для денег
 

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