restart nginx

Алексей Масленников minisotm на gmail.com
Ср Авг 3 10:37:45 UTC 2011


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

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

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

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 на jabber.ru


3 августа 2011 г. 14:07 пользователь Gena Makhomed <gmm на csdoc.com> написал:

> 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<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 на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20110803/fe1628d6/attachment-0001.html>


Подробная информация о списке рассылки nginx-ru