ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: restart nginx



Огромное спасибо. теперь понимание настало!

А можно сюда же вопрос не по теме ?

Почему не работают эти локейшины:

server{
....
       location / {
            try_files $uri $uri/ /index.php;
       }

        location /32x45/ {
            proxy_pass http://proxy/img/;
            image_filter   resize  32 45;
        }
....

      location ~ \.php$ {
            proxy_set_header    Host    $host;
            proxy_pass   http://127.0.0.1;
            proxy_set_header    X-Forwarded-For $remote_addr;
        }

}
_______________________________
С Уважением, Алексей Масленников

Jabber: minisotm@xxxxxxxxx


3 августа 2011 г. 14:07 пользователь Gena Makhomed <gmm@xxxxxxxxx> написал:
On 03.08.2011 12:27, Алексей Масленников wrote:

на системе CentOS release 5.3 (Final)

где Вы взяли такой древний и глючный инит-скрипт?


Запускается раза с 5-го

т.е. нормально не работает service nginx start ?


> restart пишет что все ОК, но не работает .

или проблемы только с service nginx restart ?

что при этом пишется на stderr и в error.log ?


make_dirs() {
   # make required directories
   user=`nginx -V 2>&1 | grep "configure arguments:" | sed
's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   options=`$nginx -V 2>&1 | grep 'configure arguments:'`
   for opt in $options; do
       if [ `echo $opt | grep '.*-temp-path'` ]; then
           value=`echo $opt | cut -d "=" -f 2`
           if [ ! -d "$value" ]; then
               # echo "creating" $value
               mkdir -p $value && chown -R $user $value
           fi
       fi
   done
}

возможно имеет смысл эту функциональность перенести
внутрь /usr/sbin/nginx, чтобы он сам создавал каталоги.
потому что через shell-скрипт получается не очень красиво...


stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

причина глюков с restart - именно в этом,
старому экземпляру nginx посылают сигнал -QUIT
- это команда на "плавное завершение" и после
этого - сразу же запускают новый экземпляр.

если убрать -QUIT - то service nginx stop будет завершать
его работу гораздо быстрее, сразу обрывая все соединения.


restart() {
    configtest || return $?
    stop
    sleep 1
    start
}

sleep 1 - это не очень хороший workaround для вручную созданного
глюка, старый экземпляр nginx может и не успеть выйти за 1 секунду.

кроме того - нет никакого смысла использовать restart, когда
в nginx есть http://sysoev.ru/nginx/docs/control.html#upgrade
да и большинство изменений в конфигурации применяются
с помощью команды service nginx reload

force_reload() {
    restart
}

очень старый инит-скрипт, эти ошибки были исправлены
в нем еще несколько лет тому назад. по крайней мере,
в init-скрипте из EPEL этих ошибок уже давно нет.

Как это отдебажить ? Спасибо.

см. в аттаче мой вариант инит-скрипта.

после изменения настроек лучше делать service nginx reload
а после обновления бинарника или чтобы на 100% быть уверенным,
что все изменения применились - service nginx force-reload

service nginx restart не имеет смысла вообще использовать.
разве что только в том случае когда nginx так зависнет,
что никак нельзя будет завершить, а только через kill -9
( но лучше будет причину этой ошибки найти и устранить )

там я еще сделал некоторую часть работы для того, чтобы
можно было запускать одновременно несколько независимых
экземпляров nginx на одном сервере, просто копируя
инит-скрипт, например, в nginx-frontend, nginx-static, и т.п.
меняя переменную pidfile и значение переменной instance -
но пока что полностью это сделать не удалось - в nginx
жестко вкомпилировано имя error.log файла и поэтому
разные экземпляры nginx будут писать ошибки в один
и тот же лог-файл, что не очень удобно и трудно
потом будет понять, что к чему относится.

на FreeBSD насколько я знаю, nginx "из коробки"
поддерживает такой режим работы, что можно запускать
несколько полностью независимых друг от друга экземпляров,
но на Linux - такую функциональность сейчас сделать нельзя,
не компилируя его много раз с различными параметрами configure.

--
Best regards,
 Gena

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.