Re: решение ограничения в 10 перенаправлений c помощью пересборки nginx

2019-02-07 Пенетрантность Vadim Lazovskiy
>
> cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g
> -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I
> src/http -I src/http/modules \
> -o objs/src/http/ngx_http_core_module.o \
> src/http/ngx_http_core_module.c
> src/http/ngx_http_core_module.c: В функции «ngx_http_subrequest»:
> src/http/ngx_http_core_module.c:2368:5: ошибка: неявное приведение большого
> целого значения к беззнаковому типу [-Werror=overflow]
> sr->uri_changes = NGX_HTTP_MAX_URI_CHANGES + 1;
> ^
> cc1: all warnings being treated as errors
> make[1]: *** [objs/src/http/ngx_http_core_module.o] Ошибка 1
> make[1]: Выход из каталога '/*/nginx-1.15.8'
> make: *** [build] Ошибка 2
>
>
Здравствуйте.

Под поле uri_changes в ngx_http_request_t (src/http/ngx_http_request.h)
отведено 4 бита:
 unsigned uri_changes:4;

Можете попробовать увеличить до 8 или поменять тип на uint8_t, но я не
разработчик и сохранение работоспособности и/или совместимости
гарантировать не могу.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

SLES 15 nginx repo

2018-08-20 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Можно вас попросить добавить сборку для SLES 15?

Спасибо.

-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Listen ssl

2017-11-27 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Уберите из конфига ssl on;
Используйте вместо него параметр ssl к директиве listen.

27 ноября 2017 г., 12:24 пользователь Artemdno 
написал:

> Здравствуйте, помогите христа ради.
>
> Есть три файла в sites-enabled, в каждом описано:
>
> server {
> listen 8080;
> server_name  ;
>
> ssl on;
>
> ssl_certificate .crt;
> ssl_certificate_key  .key;
>
> ssl_session_timeout  5m;
>
> ssl_protocols  SSLv2 SSLv3 TLSv1;
> ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+
> HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
> ssl_prefer_server_ciphers   on;
>
> location / {
> proxy_pass http://127.0.0.1:/;
> }
> }
>
> Если в одном из файлов убрать ssl, То он всё равно ожидает https
> (появляется
> ошибка о попытке отправки http запроса, на https порт).
> Подскажите пожалуйста, почему появляется эта ошибка?
>
> Posted at Nginx Forum: https://forum.nginx.org/read.
> php?21,277519,277519#msg-277519
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx repos Ubuntu 17.10 artful

2017-11-22 Пенетрантность Vadim Lazovskiy
Большое спасибо!

22 ноября 2017 г., 13:01 пользователь Konstantin Pavlov 
написал:

> On 10/11/2017 14:13, Konstantin Pavlov wrote:
> > Добрый день,
> >
> > On 10/11/2017 10:14, Vadim Lazovskiy wrote:
> >> Здравствуйте.
> >>
> >> Не могли бы вы приготовить пакеты для Ubuntu 17.10?
> >>
> >> Спасибо!
> >
> > Будет со следующим mainline релизом.
>
> Пакеты для 17.10 выложены для 1.13.7.
>
> --
> Konstantin Pavlov
> www.nginx.com
>



-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

nginx repos Ubuntu 17.10 artful

2017-11-09 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Не могли бы вы приготовить пакеты для Ubuntu 17.10?

Спасибо!

-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Размер исполняемого файла.

2017-10-23 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Заведите кастомный лог, используйте log_format:

log_format log_random '$remote_addr "$request" $request_filename';

...

location /test/ {
access_log /var/log/nginx/test.log log_random;
random_index on;
}
Если хотите, чтобы попадало и в дефолтный лог и в кастомный, то в данном
location нужно дополнительно продублировать директиву access_log c уровня
server в противном случае будет писаться только в 1 лог.

22 октября 2017 г., 16:45 пользователь supermicro <
nginx-fo...@forum.nginx.org> написал:

> >> Есть ли другие варианты?
>
> >Есть. Например, можно пропатчить файл
> src\http\modules\ngx_http_random_index_module.c
> >чтобы он выводил в лог нужную Вам информацию не на уровне debug.
>
> Это конечно можно, но не все умеют :)
> Попробую, так как других вариантов похоже, что нет.
> Спасибо большое ещё раз!
>
> --
> С уважением, Виктория.
>
> Posted at Nginx Forum: https://forum.nginx.org/read.
> php?21,277023,277029#msg-277029
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Условие или

2017-08-07 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Можно сделать через map.
Не проверял, но  наверное сработает:

map $request_method$cookie_auth_token $redirect {
"~^GET.+" 1;
 default 0;
}

...

if ($redirect) {
   return 418;
}

В случае непустой куки строка $request_method$cookie_auth_token смапится в
единицу.

8 августа 2017 г., 1:54 пользователь z6464 
написал:

> Подскажите как в этом примере сделать чтобы срабатывало или первое условие
> или второе
> if ($request_method = GET) {
>   set $test  A;
> }
>
> if ($http_cookie !~* "auth_token") {
>   set $test  "${test}B";
> }
>
> if ($test = AB) {
>   return 418;
> }
>
> Posted at Nginx Forum: https://forum.nginx.org/read.
> php?21,275920,275920#msg-275920
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: замена значения переменной в location

2017-05-21 Пенетрантность Vadim Lazovskiy
А вообще, не выделяейте из uri расширение и внутри location просто допишите:

set $name "${name}.mp3"

22 мая 2017 г., 9:27 пользователь Vadim Lazovskiy  написал:

> Здравствуйте.
>
> В ту же самую переменную (зачем?), наверное, можно так (1.11.0+):
>
> map $name $new_name {
>~"^(?.*)\.mp\d+$" "${basename}.mp3";
>default "";
> }
>
> location ~ /.../(?.*)/...$ {
> set $name $new_name;
> ...
> }
>
>
> 21 мая 2017 г., 17:19 пользователь Владислав Толмачев <
> tolmachev.v...@gmail.com> написал:
>
>> Добрый день. Есть переменная в location $name, полученная получена из
>> адреса запроса, допустим она равна ".mp999" как изменить ее значение на
>> ".mp3"?
>> Понимаю что адрес запроса можно сделать rewrite и там уже изменить эту
>> часть урл, но хотелось бы изменить ее значение в самой переменной.
>>
>> ___________
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
>
> --
> WBR,
> Vadim Lazovskiy
>



-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Следование по редиректам вместо ответа браузеру.

2017-05-21 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Например, как-то так:

location ~ /proxy/(?[^/]+)/(?.+)$ {
error_page 301 302 307 =200 @proxy_redirect;
proxy_intercept_errors on;

proxy_pass http://$proxy_host/$proxy_uri?$args;

...
}

location @proxy_redirect {
set $redirect_url $upstream_http_location;

proxy_pass $redirect_url;
proxy_set_header Host $proxy_host;

...
}

Кеширование добавить в оба location.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: замена значения переменной в location

2017-05-21 Пенетрантность Vadim Lazovskiy
Здравствуйте.

В ту же самую переменную (зачем?), наверное, можно так (1.11.0+):

map $name $new_name {
   ~"^(?.*)\.mp\d+$" "${basename}.mp3";
   default "";
}

location ~ /.../(?.*)/...$ {
set $name $new_name;
...
}


21 мая 2017 г., 17:19 пользователь Владислав Толмачев <
tolmachev.v...@gmail.com> написал:

> Добрый день. Есть переменная в location $name, полученная получена из
> адреса запроса, допустим она равна ".mp999" как изменить ее значение на
> ".mp3"?
> Понимаю что адрес запроса можно сделать rewrite и там уже изменить эту
> часть урл, но хотелось бы изменить ее значение в самой переменной.
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Сначала отдать браузеру однопиксельный гиф, а потом подумать

2017-03-14 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Я за скрипт в режиме "tail -f" на лог.

14 марта 2017 г., 23:54 пользователь Vladislav Shabanov <
vlad.shaba...@gmail.com> написал:

> Добрый день.
>
> Есть location, на котором сейчас отдаётся empty_gif.
>
> Мне нужно вызвать в этом месте демона через uwsgi, чтобы демон обработал
> событие и что-то записал в БД. Не хочется заставлять браузер ждать
> окончания всей этой обработки. Как настроить nginx чтобы uwsgi вызывался
> после того, как браузеру будет отправлен однопиксельный гиф? Ответ от uwsgi
> нужно ждать N миллисекунд и выбрасывать, нам всё равно, он успешно будет
> обработан или сломается.
>
> Можно ли такое сделать штатными средствами?
>
> С уважением,
> Влад
>
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: slice загружает CPU 100%

2016-12-27 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Похожее поведение было с версией 1.9 когда не хватало размера keys_zone.
Тут следует помнить, что файл размером 1G будет разделен на 1000 фрагментов
и для каждого фрагмента будет выделен один ключ.

"Зоны размером в 1 мегабайт достаточно для хранения около 8 тысяч ключей."
Таким образом в вашем случае зона 10 мегабайт сможет хранить только 80
тысяч ключей или всего 80 гигабайт данных кэша.

В том случае очень сильно ругалось в глобальный error_log. Сообщение, к
сожалению, не воспроизведу.

27 декабря 2016 г., 15:34 пользователь davidka 
написал:

> Здравствуйте
> Я пытаюсь настроить заполнение кеша с директивой slice но при ее включении
> в
> момент когда nginx занимается заполнением кеша он загружает процессор на
> 100%, после этого даже те запросы которые дождались cache_lock_timeout не
> могут получить свои ответы, nginx просто перестает реагировать на запросы и
> уходит в себя.
>


-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: client timed out & readv() failed

2016-03-03 Пенетрантность Vadim Lazovskiy
3 марта 2016 г., 19:03 пользователь Andrey Kopeyko 
написал:
>
> ИМХО тут нечего подкручивать - фронтенд ясно говорит, что пользователь
> разорвал соединение в процессе получения ответа. Такое поведение характерно
> для IE и FF при закрытии вкладки. Научить пользователей дожидаться
> получения полного ответа перед закрытием браузера - it's fantastic.
>
> То, о чем вы говорите логгируется на уровне info как "client prematurely
closed connection".

Здесь же речь идет соединении с бакендом:
frontend говорит - не могу прочитать ничего с upstream,
а upstream - frontend ничего не читает, закрываю соединение.

И все это происходит в толстенном канале.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

client timed out & readv() failed

2016-03-03 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Возможно немного не по теме, но возможно кто-то сталкивался.

Есть upstream на nginx раздающий файлы.
Есть frontend на nginx проксирующий и кэширующий их.

Периодически в логах появляются ошибки:

upstream (nginx 1.2.9):
2016/03/03 18:28:57 [info] 16552#0: *190295515 client timed out (110:
Connection timed out) while sending response to client, client: IP, server:
SERVER, request: "GET /URI HTTP/1.0", host: "SERVER", referrer: "REFER"

frontend (nginx 1.9.11):
2016/03/03 18:27:56 [error] 22785#22785: *168191 readv() failed (104:
Connection reset by peer) while reading upstream, client: IP, server:
SERVER, request: "GET /URI HTTP/1.1", subrequest: "/URI", upstream:
"UPSTREAM", host: "SERVER", referrer: "REFER"

Причем фронтенд рапортует, что ничего не сделать на минуту раньше, нежели
бакенд.

frontend подключен по 10G, примерно 4G исходящего и 2.5G входящего трафика.
backend - port channel из 4 1G линков, недостатка в полосе не имеет.

Кто-нибудь сталкивался с подобными ошибками? С чем может быть связано и что
подкрутить?

Спасибо.

-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: slice module и proxy_cache_min_uses больше единицы.

2016-02-28 Пенетрантность Vadim Lazovskiy
Это произошло опять:

/dev/sdb1   230619884 23060346436 100% /disks/ssd01
/dev/sdc1   230619884 220280352  10323148  96% /disks/ssd02

# lsof /dev/sdb1 | wc -l
1496
# lsof /dev/sdc1 | wc -l
3377

После рестарта:
/dev/sdb1   230619884 224654868   5948632  98% /disks/ssd01

По прошлому опыту, через пару часов, размер придет в норму. До следующего
раза.
В логах lsof, на мой взгляд, ничего криминального: точно так же, на
переполненном диске дескрипторов меньше.


27 февраля 2016 г., 19:07 пользователь Roman Arutyunyan 
написал:

> Можете прислать всю конфигурацию?
>
> Кроме того, можете проследить открытые дескрипторы у воркеров nginx и их
> изменение со временем?  В особенности, растет ли их число и, если растет,
> то
> за счет чего именно.
>
>
-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: log variable

2016-02-27 Пенетрантность Vadim Lazovskiy
27 февраля 2016 г., 23:16 пользователь Vasiliy P. Melnik 
написал:

> http://nginx.org/ru/docs/http/ngx_http_log_module.html#access_log
>>>
>> Там хорошо написано про переменные в директиве.
>>
>
> Это я конечно нашел - только там не написано как файл лога создать
>
Обычно логи создает мастер-процесс, работающий из под root, поэтому все
проходит гладко. Если используются переменные в имени файла лога, то этот
лог-файл пытается открыть уже сам воркер, а он работает с пониженными
привилегиями.
Вам нужно разрешить запись в каталог с логами для пользователя, с правами
которого работает nginx, например:
chown nginx /var/log/nginx

-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: log variable

2016-02-27 Пенетрантность Vadim Lazovskiy
Здравствуйте.

27 февраля 2016 г., 21:29 пользователь Vasiliy P. Melnik 
написал:

>
> access_log /var/log/nginx/$server_name-access.log main;
>
> Получается вот такое:
>
> 2016/02/27 20:18:04 [crit] 5745#5745: *2 open()
> "/var/log/nginx/site-access.log" failed (13: Permission denied) while
> logging request, client: 192.168.88.22, server: dev4.
>
> А если файл лога создать, то нгинкс в него отлично пишет. Получается
> нгинкс не создает файл лога.
>

http://nginx.org/ru/docs/http/ngx_http_log_module.html#access_log
Там хорошо написано про переменные в директиве.


> С error лог все еще интересней - он создает лог-файл с именем
> $server_name-error.log
>

 Директива error_log не поддерживает переменные.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: slice module и proxy_cache_min_uses больше единицы.

2016-02-27 Пенетрантность Vadim Lazovskiy
27 февраля 2016 г., 19:07 пользователь Roman Arutyunyan 
написал:

> Можете прислать всю конфигурацию?
>
>
# configuration file /etc/nginx/nginx.conf:
user nginx;
worker_processes 32;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

worker_rlimit_nofile 1048576;

#thread_pool pool_ssd01 threads=32;
#thread_pool pool_ssd02 threads=32;

events {
worker_connections 8196;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

access_log /var/log/nginx/access.log;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

include /etc/nginx/vhosts.d/*.conf;
}

# configuration file /etc/nginx/mime.types:

types {
...
}

# configuration file /etc/nginx/vhosts.d/.conf:
map $upstream_hostname $allowed {
 1;
 1;

default 0;
}


log_format cache_video '$time_iso8601 $remote_addr "$request" $status
$bytes_sent $upstream_cache_status';

proxy_cache_path /disks/ssd01 levels=1:2 keys_zone=cache_ssd01:32m
use_temp_path=off inactive=7d max_size=210G;
proxy_cache_path /disks/ssd02 levels=1:2 keys_zone=cache_ssd02:32m
use_temp_path=off inactive=7d max_size=210G;

split_clients $request_uri $disk {
50% ssd01;
50% ssd02;
}


server {
listen  default_server;

access_log /var/log/nginx/-cache.log cache_video;
access_log /var/log/nginx/-access.log;
error_log /var/log/nginx/-error.log info;

root /var/www/vhosts/;

resolver ;

proxy_max_temp_file_size 0;

location /streams/ {
location ~
^/streams/(?[^/]+)/(?.*)$ {
if ($allowed = 0) {
return 403;
}

#aio threads=pool_$disk;
#sendfile on;

slice 10m;

limit_rate 1M;
limit_rate_after 2M;

proxy_pass http://
$upstream_hostname/$upstream_uri$is_args$args;
proxy_set_header Host $upstream_hostname;
proxy_set_header Range $slice_range;

proxy_cache_min_uses 10;

proxy_cache cache_$disk;
proxy_cache_key
$upstream_hostname$upstream_uri$slice_range;
proxy_cache_revalidate on;

proxy_cache_bypass $arg_start;
proxy_no_cache $arg_start;

proxy_cache_lock on;

proxy_cache_use_stale error timeout invalid_header
updating http_500 http_502 http_503 http_504 http_403;
}
}
}


> Кроме того, можете проследить открытые дескрипторы у воркеров nginx и их
> изменение со временем?  В особенности, растет ли их число и, если растет,
> то
> за счет чего именно.
>

Поставил

#!/bin/bash

DIR="/var/log/nginx-lsof"
STAMP=`date +"%Y%m%d%H%M"`

out_dir="$DIR/$STAMP"

[ ! -d "$out_dir" ] && mkdir -p "$out_dir"

/bin/ps wwho pid,args -C nginx-debug | cut -f 1,3 -d ' ' | while read pid
type
do
out_file="$out_dir/nginx-$type-$pid.log"
lsof -p "$pid" > $out_file
done

в крон раз в 5 минут. Посмотрим.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: slice module и proxy_cache_min_uses больше единицы.

2016-02-27 Пенетрантность Vadim Lazovskiy
Добавил еще один диск, сделал reload

proxy_cache_path /disks/ssd01 levels=1:2 keys_zone=cache_ssd01:32m
use_temp_path=off inactive=7d max_size=210G;
proxy_cache_path /disks/ssd02 levels=1:2 keys_zone=cache_ssd02:32m
use_temp_path=off inactive=7d max_size=210G;

split_clients $request_uri $disk {
50% ssd01;
50% ssd02;
}

Первый диск переполнился, при этом cache manager вообще ничего не удалял.
Сделал рестарт. Диск слегка почистился, но все равно не до max_size:
# df -h | grep ssd
/dev/sdb1220G  219G  1.8G 100% /disks/ssd01
/dev/sdc1220G   59G  151G  28% /disks/ssd02

В error_log две сотни подобных сообщений, не знаю, есть ли связь:

2016/02/27 14:43:52 [alert] 2367#2367: *1968479 open socket #49 left in
connection 5
2016/02/27 14:43:52 [alert] 2367#2367: *2286288 open socket #37 left in
connection 6
2016/02/27 14:43:52 [alert] 2367#2367: *2769369 open socket #96 left in
connection 27
2016/02/27 14:43:52 [alert] 2367#2367: *1987300 open socket #5 left in
connection 29
2016/02/27 14:43:52 [alert] 2367#2367: *2769354 open socket #3 left in
connection 35
2016/02/27 14:43:52 [alert] 2367#2367: *2286091 open socket #35 left in
connection 36
2016/02/27 14:43:52 [alert] 2367#2367: aborting


26 февраля 2016 г., 12:53 пользователь Roman Arutyunyan 
написал:

> On Fri, Feb 26, 2016 at 10:44:17AM +0300, Vadim Lazovskiy wrote:
> > 25 февраля 2016 г., 21:28 пользователь Roman Arutyunyan 
> > написал:
> >
> > >
> > > Попробуйте патч в аттаче.
> > >
> > >
> > Роман, спасибо! Теперь все работает как задумано.
> >
> >
> > > > И чтоб 2 раза не вставать, спрошу, отчего может возникать проблема с
> > > > переполнением диска?
> > > > Диск 220G, max_cache опустил до 190G, а на деле диск забивается под
> > > > завязку, причем именно кешем (proxy_cache_min_uses 1, slice 10m,
> 10-20
> > > rps).
> > > > В temp в этот момент не более 20 временных файлов размером ~ 10
> > > мегабайт. В
> > > > кеше все элементы <= 10 мегабайт.
> > > > Незакрытых удаленных файлов на диске нет.
> > > > В error log куча сообщений c No space left on device.
> > >
> > > Может быть такое, что кеш растет так быстро, что nginx не успевает его
> > > очищать.
> > >
> > > Еще одна причина - рестарт воркеров.  Если по какой-либо причине это
> > > происходит
> > > (например, из-за нестабильных 3rd-party модулей), то кеш может
> остаться в
> > > неконсистентном состоянии, что может приводить к описанной вами
> проблеме.
> > >
> > > Насколько часто это у вас это происходит?
> > >
> > >
> > В том-то и дело, что воркеры не падают и сборка без сторонних модулей.
> > Глядя на strace процесса cache manager, видно, что он что-то удаляет, но
> > каждый раз недостаточно.
> > Суммарный размер каталогов 0-f балансирует около значения размера диска
> > (220G) и до указанных 190G даже близко не опускается.
> > При этом '(deleted)' файлов на диске нет и в temp файлов суммарно
> мегабайт
> > на 300.
>
> Сколько файлов cache manager удаляет за раз?
>
> [..]
>
> --
> Roman Arutyunyan
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: slice module + thread pools

2016-02-26 Пенетрантность Vadim Lazovskiy
2016-02-25 19:20 GMT+03:00 Maxim Dounin :

>
> Это выглядит как проблема при aio threads + sendfile + подзапросы.
> Workaround - выключить что-нибудь из списка.  Just for the record,
> воспроизводится с помощью тестов как-то так:
>
> TEST_NGINX_GLOBALS_HTTP="aio threads; sendfile on;" prove proxy_store.t
>

Наткнулся на странное поведение:
Если запустить в браузере просмотр видео через проксирующий nginx и
одновременно запросить этот же файл wget-ом,
закачка останавливается и соединение рвется по таймауту.
Внятный debug log собрать пока не удалось, хоть и проблема воспроизводится.

При отключении aio threads данной проблемы не наблюдается.

-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx отъедает все процессорное время

2016-02-26 Пенетрантность Vadim Lazovskiy
Здравствуйте.

В официальном репозитории доступна как сборка без --with-debug так и с ним.
/usr/sbin/nginx /etc/init.d/nginx и /usr/sbin/nginx-debug
/etc/init.d/nginx-debug соответственно.

26 февраля 2016 г., 11:19 пользователь Alex Domoradov 
написал:

> > Речь не о пакете, а о бинаре:
> а каким магическим образом бинарь появится в системе, кроме как установки
> из пакета? Или мы говорим о разных вещах?
>
>

-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: slice module и proxy_cache_min_uses больше единицы.

2016-02-25 Пенетрантность Vadim Lazovskiy
25 февраля 2016 г., 21:28 пользователь Roman Arutyunyan 
написал:

>
> Попробуйте патч в аттаче.
>
>
Роман, спасибо! Теперь все работает как задумано.


> > И чтоб 2 раза не вставать, спрошу, отчего может возникать проблема с
> > переполнением диска?
> > Диск 220G, max_cache опустил до 190G, а на деле диск забивается под
> > завязку, причем именно кешем (proxy_cache_min_uses 1, slice 10m, 10-20
> rps).
> > В temp в этот момент не более 20 временных файлов размером ~ 10
> мегабайт. В
> > кеше все элементы <= 10 мегабайт.
> > Незакрытых удаленных файлов на диске нет.
> > В error log куча сообщений c No space left on device.
>
> Может быть такое, что кеш растет так быстро, что nginx не успевает его
> очищать.
>
> Еще одна причина - рестарт воркеров.  Если по какой-либо причине это
> происходит
> (например, из-за нестабильных 3rd-party модулей), то кеш может остаться в
> неконсистентном состоянии, что может приводить к описанной вами проблеме.
>
> Насколько часто это у вас это происходит?
>
>
В том-то и дело, что воркеры не падают и сборка без сторонних модулей.
Глядя на strace процесса cache manager, видно, что он что-то удаляет, но
каждый раз недостаточно.
Суммарный размер каталогов 0-f балансирует около значения размера диска
(220G) и до указанных 190G даже близко не опускается.
При этом '(deleted)' файлов на диске нет и в temp файлов суммарно мегабайт
на 300.

Ближе к вечеру станет ясно, повториться ли эта проблема с
proxy_cache_min_uses 10. Пока что очевидно, что write-IO сократилось на
порядок.
Авось ssd протянут подольше, за что вам еще раз спасибо.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: slice module + thread pools

2016-02-25 Пенетрантность Vadim Lazovskiy
2016-02-25 19:20 GMT+03:00 Maxim Dounin :

> Патч:
>
> # HG changeset patch
> # User Maxim Dounin 
> # Date 1456417157 -10800
> #  Thu Feb 25 19:19:17 2016 +0300
> # Node ID 06da00f231e74bbb8dbb55fd6abd88ca8b207917
> # Parent  463609ba52b07e8e669d83ca7ca7fa754ae5355a
> Fixed sendfile in threads when used with subrequests.
>
> If sendfile in threads where used, it was possible that multiple
> subrequests will trigger multiple ngx_linux_sendfile_thread() calls,
> as operations are only serialized in output chain based on r->aio,
> that is, on subrequest level.
>
> This resulted in "task #N already active" alerts, in particular, when
> running proxy_store.t with "aio threads; sendfile on;".
>
> Fix is to tolerate duplicate calls, with an additional safety check
> that the file is the same as previously used.
>
> diff --git a/src/os/unix/ngx_linux_sendfile_chain.c
> b/src/os/unix/ngx_linux_sendfile_chain.c
> --- a/src/os/unix/ngx_linux_sendfile_chain.c
> +++ b/src/os/unix/ngx_linux_sendfile_chain.c
> @@ -354,6 +354,18 @@ ngx_linux_sendfile_thread(ngx_connection
>  return (ctx->sent == ctx->size) ? NGX_DONE : NGX_AGAIN;
>  }
>
> +if (task->event.active && ctx->file == file) {
> +/*
> + * tolerate duplicate calls with the same file;
> + * it can happen due to subrequests, as r->aio only serializes
> + * operations within a single subrequest
> + */
> +
> +*sent = 0;
> +
> +return NGX_OK;
> +}
> +
>  ctx->file = file;
>  ctx->socket = c->fd;
>  ctx->size = size;
>
>
Максим, спасибо. На первый взгляд патч работает. Завтра попробуем под
нагрузкой.

P.S.: может показаться, что я не умею пользоваться почтой. Похоже, это
действительно так. Прошу меня извинить ;)

-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: slice module + thread pools

2016-02-25 Пенетрантность Vadim Lazovskiy
2016-02-25 19:20 GMT+03:00 Maxim Dounin :
>
>
> Это выглядит как проблема при aio threads + sendfile + подзапросы.
> Workaround - выключить что-нибудь из списка.  Just for the record,
> воспроизводится с помощью тестов как-то так:
>
> TEST_NGINX_GLOBALS_HTTP="aio threads; sendfile on;" prove proxy_store.t
>
> Патч:
>
> # HG changeset patch
> # User Maxim Dounin 
> # Date 1456417157 -10800
> #  Thu Feb 25 19:19:17 2016 +0300
> # Node ID 06da00f231e74bbb8dbb55fd6abd88ca8b207917
> # Parent  463609ba52b07e8e669d83ca7ca7fa754ae5355a
> Fixed sendfile in threads when used with subrequests.
>
> If sendfile in threads where used, it was possible that multiple
> subrequests will trigger multiple ngx_linux_sendfile_thread() calls,
> as operations are only serialized in output chain based on r->aio,
> that is, on subrequest level.
>
> This resulted in "task #N already active" alerts, in particular, when
> running proxy_store.t with "aio threads; sendfile on;".
>
> Fix is to tolerate duplicate calls, with an additional safety check
> that the file is the same as previously used.
>
> diff --git a/src/os/unix/ngx_linux_sendfile_chain.c
> b/src/os/unix/ngx_linux_sendfile_chain.c
> --- a/src/os/unix/ngx_linux_sendfile_chain.c
> +++ b/src/os/unix/ngx_linux_sendfile_chain.c
> @@ -354,6 +354,18 @@ ngx_linux_sendfile_thread(ngx_connection
>  return (ctx->sent == ctx->size) ? NGX_DONE : NGX_AGAIN;
>  }
>
> +if (task->event.active && ctx->file == file) {
> +/*
> + * tolerate duplicate calls with the same file;
> + * it can happen due to subrequests, as r->aio only serializes
> + * operations within a single subrequest
> + */
> +
> +*sent = 0;
> +
> +return NGX_OK;
> +}
> +
>  ctx->file = file;
>  ctx->socket = c->fd;
>  ctx->size = size;
>




-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: slice module и proxy_cache_min_uses больше единицы.

2016-02-25 Пенетрантность Vadim Lazovskiy
25 февраля 2016 г., 18:53 пользователь Evgeniy Berdnikov 
написал:

>
>
>  Проверьте количество инод: df -i.
>
>
Инодов хватает.

Проблема именно с местом. Почти все файлы имеют размер слайса - 10
мегабайт, таким образом их влезает не более 22 тысяч.

-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: slice module и proxy_cache_min_uses больше единицы.

2016-02-25 Пенетрантность Vadim Lazovskiy
25 февраля 2016 г., 16:53 пользователь Roman Arutyunyan 
написал:
>
>
> Маловат фрагмент.  Хотелось бы посмотреть на весь запрос и подзапросы.
>
>
Сразу прошу прощения за размер логов.

http://disk.karelia.pro/833rexx/

Два лога:
1. с proxy_cache_min_uses 1. Работает, как задумывалось.
Запрос на перемотку можно найти по диапазону 498197221-1279019570.

2. с proxy_cache_min_uses 50. Ломается перемотка из-за игнорирования Range
(или учета If-Range, кто его разберет).
Запрос на пеермотку можно найти по диапазону 467829492-1279019570.

И чтоб 2 раза не вставать, спрошу, отчего может возникать проблема с
переполнением диска?
Диск 220G, max_cache опустил до 190G, а на деле диск забивается под
завязку, причем именно кешем (proxy_cache_min_uses 1, slice 10m, 10-20 rps).
В temp в этот момент не более 20 временных файлов размером ~ 10 мегабайт. В
кеше все элементы <= 10 мегабайт.
Незакрытых удаленных файлов на диске нет.
В error log куча сообщений c No space left on device.

Спасибо.

-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: slice module и proxy_cache_min_uses больше единицы.

2016-02-25 Пенетрантность Vadim Lazovskiy
>
>
> Запрос №2:
> Перематываем на произвольную позицию. Браузер делает range-запрос, а
> получает 200 и полный Content-Length
> https://drive.google.com/file/d/0B5-OwnlywJGhOWZtMTdCYlQ3Z1k/view
>
>
>
Дело в If-Range. curl-ом без него все хорошо. Но связи с
proxy_cache_min_uses я не улавливаю.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

slice module и proxy_cache_min_uses больше единицы.

2016-02-25 Пенетрантность Vadim Lazovskiy
che/nginx/uwsgi_temp
--http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx
--with-http_ssl_module --with-http_realip_module
--with-http_addition_module --with-http_sub_module --with-http_dav_module
--with-http_flv_module --with-http_mp4_module --with-http_gunzip_module
--with-http_gzip_static_module --with-http_random_index_module
--with-http_secure_link_module --with-http_stub_status_module
--with-http_auth_request_module --with-threads --with-stream
--with-stream_ssl_module --with-http_slice_module --with-mail
--with-mail_ssl_module --with-file-aio --with-http_v2_module
--with-cc-opt='-g -O2 -fstack-protector-strong -Wformat
-Werror=format-security -Wp,-D_FORTIFY_SOURCE=2'
--with-ld-opt='-Wl,-z,relro -Wl,--as-needed' --with-ipv6


Спасибо.

-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: slice module + thread pools

2016-02-23 Пенетрантность Vadim Lazovskiy
23 февраля 2016 г., 11:22 пользователь Vadim Lazovskiy <
vadim.lazovs...@gmail.com> написал:

> Здравствуйте.
>
> Возникает проблема с отдачей данных из кэша при использовании связки slice
> module + aio treads.
>
> Проблема 1 (aio выключено, slice включен):
> Если запустить скачивание файла через прокси, прервать на середине, а
> потом запустить заново, закешированная часть отдается медленно (5-8
> мегабайт/сек). Ежели докачать файл через прокси до конца, последующие
> запросы к нему происходят на максимальной скорости (1Gbps в тесте).
>
> С чем может быть связана медленная отдача закешированных слайсов?
>
>
Уточнение.

Апстрим ограничивает скорость отдачи до 1Мбайт/сек.
slice module вместо того чтобы быстро собрать имеющиеся в кэше слайсы и
отправить их клиенту начинает запрашивать новые (отсутствующие?) у апстрима.
Как раз в этот момент и проседает скорость отдачи имеющихся слайсов.

-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: slice module + thread pools

2016-02-23 Пенетрантность Vadim Lazovskiy
>
>
> Проблема 1 (aio выключено, slice включен):
> Если запустить скачивание файла через прокси, прервать на середине, а
> потом запустить заново, закешированная часть отдается медленно (5-8
> мегабайт/сек). Ежели докачать файл через прокси до конца, последующие
> запросы к нему происходят на максимальной скорости (1Gbps в тесте).
>
> С чем может быть связана медленная отдача закешированных слайсов?
>
>
Уточнение.

Апстрим ограничивает скорость отдачи до 1Мбайт/сек.
slice module вместо того чтобы быстро собрать имеющиеся в кэше слайсы и
отправить их клиенту начинает запрашивать новые (отсутствующие?) у апстрима.
Как раз в этот момент и проседает скорость отдачи имеющихся слайсов.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

slice module + thread pools

2016-02-23 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Возникает проблема с отдачей данных из кэша при использовании связки slice
module + aio treads.

Проблема 1 (aio выключено, slice включен):
Если запустить скачивание файла через прокси, прервать на середине, а потом
запустить заново, закешированная часть отдается медленно (5-8
мегабайт/сек). Ежели докачать файл через прокси до конца, последующие
запросы к нему происходят на максимальной скорости (1Gbps в тесте).

С чем может быть связана медленная отдача закешированных слайсов?

Проблема 2 (aio включено slice включен):
Если запустить  скачивание файла через прокси, скорость очень низкая,
соединение постоянно разрывается. В логах при этом:
2016/02/23 10:36:11 [alert] 11124#11124: task #1 already active
2016/02/23 10:36:12 [alert] 11124#11124: task #4 already active
2016/02/23 10:36:14 [alert] 11124#11124: task #7 already active
2016/02/23 10:36:17 [alert] 11124#11124: task #10 already active
2016/02/23 10:37:59 [alert] 11124#11124: task #23 already active
2016/02/23 10:38:07 [alert] 11124#11124: task #35 already active
2016/02/23 10:38:17 [alert] 11124#11124: task #37 already active

Если отключить slice module, все становится хорошо.

С чем могут быть связаны данные проблемы?

Спасибо.


Конфиг:

thread_pool pool_ssd01 threads=16;

proxy_cache_path /disks/ssd01 levels=1:2 keys_zone=cache_ssd01:4m
use_temp_path=off inactive=7d max_size=230G;

split_clients $request_uri $disk {
100% ssd01;
}

location /streams/ {
location ~
^/streams/(?[^/]+)/(?.*)$ {
if ($allowed = 0) {
return 403;
}

slice 10m;

aio threads=pool_$disk;

proxy_pass http://
$upstream_hostname/$upstream_uri$is_args$args;
proxy_set_header Host $upstream_hostname;
proxy_set_header Range $slice_range;
proxy_ignore_client_abort on;

proxy_cache cache_$disk;
proxy_cache_key
$upstream_hostname$upstream_uri$slice_range;
proxy_cache_revalidate on;

proxy_cache_bypass $arg_start;
proxy_no_cache $arg_start;

proxy_cache_lock on;
proxy_cache_lock_age 60s;

proxy_cache_use_stale error timeout invalid_header
updating http_500 http_502 http_503 http_504 http_403;
}
}


# uname -a
Linux localhost.localdomain 3.16.0-4-amd64 #1 SMP Debian
3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux

# /usr/sbin/nginx -V
nginx version: nginx/1.9.11
built by gcc 4.9.2 (Debian 4.9.2-10)
built with OpenSSL 1.0.1k 8 Jan 2015
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx
--modules-path=%{_libdir}/nginx/modules --conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid
--lock-path=/var/run/nginx.lock
--http-client-body-temp-path=/var/cache/nginx/client_temp
--http-proxy-temp-path=/var/cache/nginx/proxy_temp
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
--http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx
--with-http_ssl_module --with-http_realip_module
--with-http_addition_module --with-http_sub_module --with-http_dav_module
--with-http_flv_module --with-http_mp4_module --with-http_gunzip_module
--with-http_gzip_static_module --with-http_random_index_module
--with-http_secure_link_module --with-http_stub_status_module
--with-http_auth_request_module --with-threads --with-stream
--with-stream_ssl_module --with-http_slice_module --with-mail
--with-mail_ssl_module --with-file-aio --with-http_v2_module
--with-cc-opt='-g -O2 -fstack-protector-strong -Wformat
-Werror=format-security -Wp,-D_FORTIFY_SOURCE=2'
--with-ld-opt='-Wl,-z,relro -Wl,--as-needed' --with-ipv6


-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Общий кэш на нескольких дисках

2016-02-22 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Спасибо за наводку на split_clients. Похоже, вопрос снят.

22 февраля 2016 г., 21:35 пользователь Maxim Konovalov 
написал:

> On 2/22/16 9:33 PM, Maxim Konovalov wrote:
> > On 2/22/16 9:28 PM, Vadim Lazovskiy wrote:
> >> Здравствуйте.
> >>
> >> Имеется, допустим, 16 отдельных дисков.
> >> Задача сделать общий кэш.
> >>
> >> Проще всего указать levels=1, на каждом диске создать по каталогу
> >> (от 0 до f) и собрать их в симлинками в proxy_cache_path.
> >>
> >> При этом возникает проблема со временными файлами. Они создаются вне
> >> дисков во временных каталогах и из-за этого перемещение файлов
> >> происходит между файловыми системами, что очень долго и накладно.
> >>
> >> Не решает проблему и опция use_temp_path. В данном случае, она
> >> просто создает еще один временный каталог, но опять не там где нужно.
> >>
> > Не совсем ясно, почему не решает проблему use_temp_path=off. Она как раз
> > была придумана для решения описанной проблемы перемещения файлов между
> > разным файловыми системами.
>
> https://www.nginx.com/blog/nginx-caching-guide/
>
> --
> Maxim Konovalov
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Общий кэш на нескольких дисках

2016-02-22 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Имеется, допустим, 16 отдельных дисков.
Задача сделать общий кэш.

Проще всего указать levels=1, на каждом диске создать по каталогу (от 0 до
f) и собрать их в симлинками в proxy_cache_path.

При этом возникает проблема со временными файлами. Они создаются вне дисков
во временных каталогах и из-за этого перемещение файлов происходит между
файловыми системами, что очень долго и накладно.

Не решает проблему и опция use_temp_path. В данном случае, она просто
создает еще один временный каталог, но опять не там где нужно.

Проблему бы решила запись временного файла непосредственно в каталог с
кешем с учетом иерархии levels c последующим переименованием в оконечное
имя. Навроде параметра use_temp_path=inplace

Подскажите, пожалуйста, как правильнее реализовать общий кэш на отдельных
дисках?

-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Проксирование по заранее не заданным ссылкам

2016-02-19 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Модули не нужны.

location / {
auth_request /router;
auth_request_set $proxy_uri $upstream_http_x_uri;

proxy_pass http://your_hostname$proxy_uri;
...
}

location = /router {
proxy_pass http://your_router_backend;
proxy_set_header X-Original-URI $request_uri;
}

Роутер должен анализировать X-Original-URI и выдавать заголовок X-Proxy-URI.
Как-то так.

19 февраля 2016 г., 14:46 пользователь sirakuzi  написал:

> Добрый день,
>
> Большого опыта общения с Nginx не имею, но потребовалось написать Nginx
> модуль который должен иметь возможность проксировать входящий запрос на
> заранее не определенные места (к примеру url куда производить проксирование
> будут браться из запроса к другому веб-сервису или из БД, запросы к которым
> будут происходить в модуле).
> Пока придумал структуру через задание переменной и изменения ее значения в
> зависимости от приходящего url, а затем передачи управления прокси модулю
> на
> эту переменную:
> proxy_pass $variable_name
> Как вы оцениваете такую реализацию? Жизнеспособна либо она при нагрузке?
> Может есть более правильные решения такого вопроса?
>
> Так же есть вопрос про обращениям к сторонним вебсервисам в теле модуля,
> лучше использовать связку subrequest+proxy_pass или же вполне можно
> воспользоваться сторонней библиотекой, к примеру libcurl?
>
> Posted at Nginx Forum:
> https://forum.nginx.org/read.php?21,264622,264622#msg-264622
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: try_files и регистр

2016-02-19 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Насколько мне известно, try_files проверяет наличие файла простым открытием.
Обеспечить нечувствительность к регистру в таком случае невозможно.

Нужно читать каталог с данным файлом и приводить все элементы к одному
регистру, а затем выполнять поиск.
Но это уже совсем другая история.

18 февраля 2016 г., 22:04 пользователь Андрей Василишин  написал:

> 18.02.2016 17:48, Alex Vorona пишет:
>
>> 18.02.16 13:00, Андрей Василишин пишет:
>>
>>> Всем привет!
>>> Как сделать так, чтобы try_files искал файл без учета регистра. Есть
>>> часть расширений у файлов в верхнем регистре, часть в нижнем, ссылки все
>>> в нижнем регистре.
>>>
>> Для известного расширения можно попробовать regex capturing location на
>> имя файла без расширения и try_files с результатом capturing и нужными
>> вариантами расширения.
>>
>>
>
> пока ограничился переименованием всех файлов в нижний регистр
> find /path/to/files -type f -exec rename 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;
>
>
> Но а вообще странно, для location есть ~*, а для try_files - нет
>
>
> _______
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Многоразовое перенаправление за счет error page

2015-08-24 Пенетрантность Vadim Lazovskiy
А еще у вас не видно:
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors

в вашем случае до обработки error_page просто не доходит.
Если с обеими директивами не заработает, то смотрите debug log.

24 августа 2015 г., 12:19 пользователь Vadim Osipov
 написал:
> Спасибо !
> Но, вы знаете, что-то не работает, хотя по документации должно и лимит не
> превышает.
> Я установил на уровне http, location изменил код возврата на 400 от сервера
> и все равно в location @go_for_default не переходит, а возвращает 404.
> Если у вас работает, не затруднит ли вас прислать конфигурацию ?
> Я даже логировал, в 2ю заходит, а в 3ю -нет :(
>
> Posted at Nginx Forum: 
> http://forum.nginx.org/read.php?21,261199,261200#msg-261200
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Многоразовое перенаправление за счет error page

2015-08-23 Пенетрантность Vadim Lazovskiy
Здравствуйте.

http://nginx.org/en/docs/http/ngx_http_core_module.html#recursive_error_pages

23 августа 2015 г., 23:56 пользователь Vadim Osipov
 написал:
> Здравствуйте !
>
> Скажите, пожалуйста, можно ли использовать несколько раз error_page для
> перемещения по location-ам, если получаемый статус не является желаемым ?
> Вот конфигурация (рабочая, но придуманная "от фонаря" для целей
> тестирования):
>
> location /images {
> set $memcached_key "$arg_mykey";
> memcached_pass localhost:11211;
> error_page 404 502 504 @go_to_server;
> }
>
> location @go_to_server {
> proxy_pass http://localhost:8080;
> error_page 400 @go_for_default;
> }
>
> location @go_for_default {
> set $memcached_key "default_key_$arg_mykey";
> memcached_pass localhost:11211;
> error_page 404 502 502 @go_for_default_to_server;
> }
>
> location @go_for_default_to_server {
> proxy_pass http://localhost:8080/default/images;
> return 400;
> }
>
> Посылаю запрос на /images, если в memcached нету, то обрабатываю от него
> статус, путем перенаправления запроса на сервер приложений.
> Но вот что мне не удалось, так это обработать статус от сервера приложений
> путем переброски запроса на другой location, чтобы, например как здесь,
> сделать запрос к memcached за дефолтным значением (и опять на сервер
> приложений в последний раз).
>
> Может быть то, что я хочу сделать
> не так делается
> или есть другая возможность за счет другой директивы
> или в принципе такое нельзя сделать в nginx (только 1 раз от memcached ->
> backend и за счет error_page)
> ?
>
> P.S.
> location @go_to_server {
> proxy_pass http://localhost:8080;
> error_page 400 @go_for_default;
> }
> самое интересное, что статус на клиент приходит 404. Даже если заменить на
> error_page 400 = 200;
> Получается, что 2ой раз использование error_page игнорируется ?
>
> Posted at Nginx Forum: 
> http://forum.nginx.org/read.php?21,261196,261196#msg-261196
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: webdav сервер на nginx

2015-05-08 Пенетрантность Vadim Lazovskiy
Здравствуйте.

В nginx отсутствует поддержка методов OPTIONS и PROPFIND, необходимых
для полноценной работы протокола.
Есть модуль dav_ext позволяющий осуществить задуманное:
https://github.com/arut/nginx-dav-ext-module

8 мая 2015 г., 15:10 пользователь Иван Мишин  написал:
> Поднял webdav сервер на nginx со следующим конфигом
>
>  server {
>  listen 80;
>  server_name x.x.x.x;
>
>
>  location / {
>
> autoindex on;
> root /etc/nginx/include/webdav;
> client_max_body_size 0;
> dav_methods PUT MKCOL COPY MOVE;
> create_full_put_path on;
> dav_access all:rw;
>   }
>  }
>
> права у директории drwxr-xr-x 2 root  root 4096 Май  8 14:33 webdav
>
> если набрать в браузере http://x.x.x.x/  то видно файлики которые лежат в
> директории webdav
> и их можно скачать.
>
> А вот кадавер не работает
> cadaver http://x.x.x.x:80
> Could not open collection:
> 405 Not Allowed
> dav:/?
>
> cyberduck тоже не работает пишет что  удаленный хост закрыл соединение на
> стадии handshake
>
> Как сетевой диск в windows 7 тоже не цепляется.
>
>
> Подскажите, что я делаю не так?
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Журнал запросов для кешированных страниц

2015-02-26 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Можно попробовать сделать (не проверял):

map $upstream_cache_status $log_name {
   HIT hit;
   default miss;
}

access_log /var/log/nginx/domain.name-access.$log_name.log;

http://nginx.org/ru/docs/http/ngx_http_log_module.html#access_log
http://nginx.org/ru/docs/http/ngx_http_upstream_module.html#variables

Даже если такая конструкция заработает, все же лучше обновиться до 1.7

26 февраля 2015 г., 10:47 пользователь Romano  написал:
> Ребята, спасибо за помощь! На одной версии Nginx настроил, а на старых
> выходит каменный цветок. Директива access_log условия не поддерживает, а
> оператор if не позволяет разместить директиву в теле условия.
>
> Можно что-то сделать без обновления на более новые версии Nginx?
>
> Posted at Nginx Forum: 
> http://forum.nginx.org/read.php?21,256915,256925#msg-256925
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: $server protocol попадает в location, почему так?

2015-02-10 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Версия nginx какая?
И, если можно, конфиг location полностью.

Есть мнение, что версия < 1.7.1:

*) Bugfix: the "alias" directive used inside a location given by a
   regular expression worked incorrectly if the "if" or "limit_except"
   directives were used.


10 февраля 2015 г., 10:47 пользователь Maximus43  написал:
> Насколько я помню, раньше все работало, а сейчас наткнулся на проблему,
> которую сходу решить не смог.
>
> Имеется location ~ '^/(?[\D-]{2})/(?.*)'
>
> В конце прописан алиас:
>
>  alias /var/www/infoss/$lang_code/vpnbox/$rest_uri;
>
> Цель, чтобы запрос http://box.infoss.no/no/index.html брал данные из
> /var/www/infoss/no/vpnbox/index.html
>
> Но в итоге я получаю ошибку:
>
> 2015/02/10 07:33:41 [error] 7046#0: *283439
> "/var/www/infoss/no/vpnbox/HTTP/1.1index.html" is not found (2: No such file
> or directory), client: 84.208.48.150, server: box.info, request: "GET /no/
> HTTP/1.1", host: "box.infoss.no"
>
> Почему-то HTTP/1.1 попадает в локейшен, а далее в переменную $rest_uri
>
> Куда копать?
>
> Заранее спасибо!
>
> Posted at Nginx Forum: 
> http://forum.nginx.org/read.php?21,256531,256531#msg-256531
>
> _______
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: image_filter в репозиториях debian

2014-12-15 Пенетрантность Vadim Lazovskiy
15 декабря 2014 г., 21:04 пользователь Vadim A. Misbakh-Soloviov
 написал:
>
> Не все хотят ставить кучу околоиксового crapware при установке веб-сервера,
> наример
>

Следуя вашей логике image_filter тоже crapware, раз crapware использует.

Чтобы не быть голословным, приведу список пакетов, которые нужно
установить дополнительно чтобы разобраться с зависимостями nginx-full:
geoip-database libgeoip1 libclass-isa-perl libswitch-perl perl
perl-modules libxml2 libxslt1.1 xml-core libexpat1 libfreetype6
libgd2-noxpm libjpeg8 libpng12-0
sgml-base libpcre3

"околоиксового crapware" здесь ровно 4 пакета. По-моему на кучу не тянет.

-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: image_filter в репозиториях debian

2014-12-15 Пенетрантность Vadim Lazovskiy
15 декабря 2014 г., 20:38 пользователь Валентин Бартенев
 написал:
>
> Этот модуль требует дополнительно зависимости - библиотеки gd, которая, к 
> тому же,
> в debian тянет за собой много еще чего.
>

imho, в этом нет ничего ужасного. Зависимостей не так уж и много и все
они есть в репозитории.
Упражнения при обновлении куда хуже.

-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: image_filter в репозиториях debian

2014-12-15 Пенетрантность Vadim Lazovskiy
Речь идет как раз про официальные (http://nginx.org/en/linux_packages.html).

15 декабря 2014 г., 19:38 пользователь denis  написал:
> 15.12.2014 16:48, Vadim Lazovskiy пишет:
>>
>> Здравствуйте.
>>
>> А почему image_filter не включен в сборки для debian (подозреваю и для
>> прочих)?
>> Не очень удобно каждый раз при обновлении пересобирать пакет.
>
> вопрос к майтайнеру пакета для дебиана... и это не местные разрабы, как я
> понимаю.
> Во всяком случае, дебиановские пакеты тут не любят при поиске проблем,
> говорят сначала на оф заменить.
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

image_filter в репозиториях debian

2014-12-15 Пенетрантность Vadim Lazovskiy
Здравствуйте.

А почему image_filter не включен в сборки для debian (подозреваю и для прочих)?
Не очень удобно каждый раз при обновлении пересобирать пакет.

Спасибо.

-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Re: Отрерайтить поддомены в страницы

2014-11-04 Пенетрантность Vadim Lazovskiy
Действительно, не работает.
Наверное из-за index_module.

У меня заработало вот так:

server {
listen 93.190.201.201:80;
server_name ~^(?[^\.]+)\.(?.+)$;

access_log /var/log/nginx/wildcard.testname.ru-access.log;
error_log /var/log/nginx/wildcard.testname.ru-error.log info;

root /home/www;

location = / {
try_files /$domain/$page.html =404;
}
}

4 ноября 2014 г., 19:46 пользователь valet  написал:
> В конфиге сделал:
> ...
> server_name ~^(?[^\.]+)\.(?.+)$;
> ...
> location = / {
> alias /var/www/sites/$domain/$page.html;
> }
> ...
>
> В браузере запросил страницу http://page-1.sub1.site1.ru
> в логе ошибок получил запись такую:
>
> 2014/11/04 17:40:27 [alert] 12188#0: *344577016
> "/var/www/sites/sub1.site1.ru/page-1.htmlindex.html" is not a directory,
> client: 37.229.114.130, server: ~^(?[^\.]+)\.(?.+)$, request:
> "GET / HTTP/1.1", host: "page-1.sub1.site1.ru"
>
> То есть как я понимаю, nginx воспринимает это как директорию, а не файл,
> поэтому дописывает дефолтную индексную страницу и ищет ее, а такой нет...
>
> Posted at Nginx Forum: 
> http://forum.nginx.org/read.php?21,254515,254570#msg-254570
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Отрерайтить поддомены в страницы

2014-11-03 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Директива server_name понимает регулярные выражения с выделениями, например:

server_name ~^(?[^.]+)\.(?.+)$;

дальше переменные $page и $domain можно использовать вместе с директивой alias:

location = / {
alias /your/data/root/$domain/$page.html;
}

Как-то так.

4 ноября 2014 г., 7:58 пользователь valet  написал:
> До сих пор не решил эту проблему. Кто-то может подсказать как это сделать?
>
> Posted at Nginx Forum: 
> http://forum.nginx.org/read.php?21,254515,254560#msg-254560
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



-- 
WBR,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: epoll_wait() reported that client prematurely closed connection

2014-09-17 Пенетрантность Vadim Lazovskiy
gt; server_name_in_redirect   off;
> server_name test.example.com;
>
> proxy_connect_timeout  60s;
> proxy_send_timeout 60s;
> proxy_read_timeout 60s;
>
> proxy_buffering  on;
> proxy_buffer_size64k;
> proxy_buffers4 64k;
> proxy_busy_buffers_size 128k;
> proxy_temp_file_write_size 10m;
> proxy_headers_hash_bucket_size 256;
>
> proxy_set_header  Host$host:$server_port;
> proxy_set_header  X-Real-IP  $remote_addr;
> proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
> access_log  /var/log/nginx/nginx.log  main;
> log_not_found off;
> root /var/spool/nginx/;
>
> location /portal-facade-ng/v1/btv/imageMap/ {
> if ($request_method != GET) {
> proxy_pass http://127.0.0.1:8080;
> break;
> }
>
> add_header  Cache-Control  no-cache;
> add_header  Content-Type   image/png;
> default_type  image/png;
> set $memcached_key   "$uri/3.8";
> memcached_pass  memcached_cluster;
> }
>
>
> location /portal-facade-ng/v1/btv/epg/current/ {
> if ($request_method != GET) {
> proxy_pass http://127.0.0.1:8080;
> break;
> }
> set $memcached_key   "$uri/3.8";
> memcached_pass  memcached_cluster;
> }
>
> location /portal-facade-ng/v1/btv/epgGrid/bar/image/ {
> if ($request_method != GET) {
> proxy_pass http://127.0.0.1:8080;
>         break;
> }
>
> add_header  Cache-Control  no-cache;
> add_header  Content-Type   image/png;
> default_type  image/png;
> set $memcached_key   "$uri/3.8";
> memcached_pass  memcached_cluster;
> }
> }
> }
>
> Posted at Nginx Forum: 
> http://forum.nginx.org/read.php?21,253351,253363#msg-253363
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



-- 
WBR,
Vadim Lazovskiy

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

Re: DAV + выделение regex + alias

2014-04-28 Пенетрантность Vadim Lazovskiy
Нет, поторопился.

Сломались другие location с проксированием вот такого вида:

location /s/

...

location /s/private/ {
location ~
"^/s/private/(?.*)/(?\d+)/(?\d{10})\.m3u8$" {
secure_link $token,$expires;
secure_link_md5 "...";

if ($secure_link = "") {
return 403;
}

if ($secure_link = "0") {
return 410;
}

fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME  $document_root/m3u8.php;
include fastcgi_params;

fastcgi_param QUERY_STRING id=$id&$args;
}
}
}


2014/04/29 09:56:08 [debug] 3630#0: *240 test location: ~
"^/s/private/(?.*)/(?\d+)/(?\d{10})\.m3u8$"
2014/04/29 09:56:08 [debug] 3630#0: *240 http regex set $id to "000977"
2014/04/29 09:56:08 [debug] 3630#0: *240 http regex set $expires to
"1398801600"
2014/04/29 09:56:08 [debug] 3630#0: *240 http regex set $token to
"X"
2014/04/29 09:56:08 [debug] 3630#0: *240 test location: ~
"^/s/private/(?.*)/(?\d+)/(?\d{10})\.m3u8$"
2014/04/29 09:56:08 [debug] 3630#0: *240 http regex set $id to "000977"
2014/04/29 09:56:08 [debug] 3630#0: *240 http regex set $expires to
"1398801600"
2014/04/29 09:56:08 [debug] 3630#0: *240 http regex set $token to
"X"
2014/04/29 09:56:08 [debug] 3630#0: *240 using configuration
"*^/s/private/(?.*)/(?\d+)/(?\d{10})\.m3u8$"
2014/04/29 09:56:08 [debug] 3630#0: *240 http cl:-1 max:1048576
2014/04/29 09:56:08 [debug] 3630#0: *240 rewrite phase: 3
2014/04/29 09:56:08 [debug] 3630#0: *240 post rewrite phase: 4
2014/04/29 09:56:08 [debug] 3630#0: *240 generic phase: 5
2014/04/29 09:56:08 [debug] 3630#0: *240 generic phase: 6
2014/04/29 09:56:08 [debug] 3630#0: *240 generic phase: 7
2014/04/29 09:56:08 [debug] 3630#0: *240 access phase: 8
2014/04/29 09:56:08 [debug] 3630#0: *240 access phase: 9
2014/04/29 09:56:08 [debug] 3630#0: *240 access phase: 10
2014/04/29 09:56:08 [debug] 3630#0: *240 post access phase: 11
2014/04/29 09:56:08 [debug] 3630#0: *240 content phase: 12
2014/04/29 09:56:08 [debug] 3630#0: *240 content phase: 13
2014/04/29 09:56:08 [debug] 3630#0: *240 content phase: 14
2014/04/29 09:56:08 [debug] 3630#0: *240 content phase: 15
2014/04/29 09:56:08 [debug] 3630#0: *240 content phase: 16
2014/04/29 09:56:08 [debug] 3630#0: *240 content phase: 17
2014/04/29 09:56:08 [debug] 3630#0: *240 http filename: "/var/www/vhosts/
s2.domain.example.com
/s/private/X/1398801600/000977.m3u8<http://stream.surveillance.karelia.pro/s/private/X/1398801600/000977.m3u8>
"

Пытается отдать файл вместо проксирования.



2014-04-28 22:31 GMT+04:00 Maxim Dounin :

> Hello!
>
> On Mon, Apr 28, 2014 at 01:22:08PM +0400, Vadim Lazovskiy wrote:
>
> > Вопрос. Откуда берется домен в имени файла и как это побороть?
>
> Выглядит как баг regex location + alias + limit_except/if.
> Собственно, для случая if он уже давно задокументирован на
> http://wiki.nginx.org/IfIsEvil.
>
> Патч, видимо, какой-то такой:
>
> # HG changeset patch
> # User Maxim Dounin 
> # Date 1398709755 -14400
> #  Mon Apr 28 22:29:15 2014 +0400
> # Node ID cf4f92f40290c9d3b8a8fb8cf836d3ebd16224f5
> # Parent  539635cb8e98063b116555bdfd0c5ccfbfa8f184
> Fixed alias in regex locations with limit_except/if.
>
> The ngx_http_map_uri_to_path() function uses clcf->regex to detect if
> it's working within a location given by a regular expression.  Its
> behaviour was incorrect due to clcf->regex being false in implicit
> locations
> created by if and limit_except.  Fix is to preserve clcf->regex within
> implicit locations.
>
> diff --git a/src/http/modules/ngx_http_rewrite_module.c
> b/src/http/modules/ngx_http_rewrite_module.c
> --- a/src/http/modules/ngx_http_rewrite_module.c
> +++ b/src/http/modules/ngx_http_rewrite_module.c
> @@ -583,6 +583,7 @@ ngx_http_rewrite_if(ngx_conf_t *cf, ngx_
>  clcf = ctx->loc_conf[ngx_http_core_module.ctx_index];
>  clcf->loc_conf = ctx->loc_conf;
>  clcf->name = pclcf->name;
> +clcf->regex = pclcf->regex;
>  clcf->noname = 1;
>
>  if (ngx_http_add_location(cf, &pclcf->locations, clcf) != NGX_OK) {
> diff --git a/src/http/ngx_http_core_module.c
> b/src/http/ngx_http_core_module.c
> --- a/src/http/ngx_http_core_module.c
> +++ b/src/http/ngx_http_core_module.c
> @@ -4597,6 +4597,7 @@ ngx_http_core_limit_except(ngx_conf_t *c
>  pclcf->limit_except_loc_conf = ctx->loc_conf;
>  clcf->loc_conf = ctx->loc_conf;
>  clcf->name = pclcf->name;
> +clcf->regex = pclcf->regex;
>  clcf

Re: DAV + выделение regex + alias

2014-04-28 Пенетрантность Vadim Lazovskiy
Максим, большое спасибо.
С патчем все работает как надо.
А какова вероятность, что этот патч попадет в mainline?


2014-04-28 22:31 GMT+04:00 Maxim Dounin :

> Hello!
>
> On Mon, Apr 28, 2014 at 01:22:08PM +0400, Vadim Lazovskiy wrote:
>
> > Вопрос. Откуда берется домен в имени файла и как это побороть?
>
> Выглядит как баг regex location + alias + limit_except/if.
> Собственно, для случая if он уже давно задокументирован на
> http://wiki.nginx.org/IfIsEvil.
>
> Патч, видимо, какой-то такой:
>
> # HG changeset patch
> # User Maxim Dounin 
> # Date 1398709755 -14400
> #  Mon Apr 28 22:29:15 2014 +0400
> # Node ID cf4f92f40290c9d3b8a8fb8cf836d3ebd16224f5
> # Parent  539635cb8e98063b116555bdfd0c5ccfbfa8f184
> Fixed alias in regex locations with limit_except/if.
>
> The ngx_http_map_uri_to_path() function uses clcf->regex to detect if
> it's working within a location given by a regular expression.  Its
> behaviour was incorrect due to clcf->regex being false in implicit
> locations
> created by if and limit_except.  Fix is to preserve clcf->regex within
> implicit locations.
>
> diff --git a/src/http/modules/ngx_http_rewrite_module.c
> b/src/http/modules/ngx_http_rewrite_module.c
> --- a/src/http/modules/ngx_http_rewrite_module.c
> +++ b/src/http/modules/ngx_http_rewrite_module.c
> @@ -583,6 +583,7 @@ ngx_http_rewrite_if(ngx_conf_t *cf, ngx_
>  clcf = ctx->loc_conf[ngx_http_core_module.ctx_index];
>  clcf->loc_conf = ctx->loc_conf;
>  clcf->name = pclcf->name;
> +clcf->regex = pclcf->regex;
>  clcf->noname = 1;
>
>  if (ngx_http_add_location(cf, &pclcf->locations, clcf) != NGX_OK) {
> diff --git a/src/http/ngx_http_core_module.c
> b/src/http/ngx_http_core_module.c
> --- a/src/http/ngx_http_core_module.c
> +++ b/src/http/ngx_http_core_module.c
> @@ -4597,6 +4597,7 @@ ngx_http_core_limit_except(ngx_conf_t *c
>  pclcf->limit_except_loc_conf = ctx->loc_conf;
>  clcf->loc_conf = ctx->loc_conf;
>  clcf->name = pclcf->name;
> +clcf->regex = pclcf->regex;
>  clcf->noname = 1;
>  clcf->lmt_excpt = 1;
>
>
>
> --
> Maxim Dounin
> http://nginx.org/
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

DAV + выделение regex + alias

2014-04-28 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Нужно разложить скиншоты по папкам и с таймстампом в имени файла. Вот
конфиг:

server_name s2.domain.example.com;

...

location /s/archive/ {
location ~
"^/s/archive/screenshots/(?(?\d{8})\d{4})/(?\d+).(?[a-z0-9]+)$"
{

limit_except GET {
allow 10.10.1.18;
deny all;
}

dav_methods PUT;
create_full_put_path on;
dav_access group:rw all:r;

alias /disks/screenshots/$dir/$basename-$timestamp.$ext;
client_body_temp_path /disks/tmp;
}

...

}

Вот запрос:

10.10.1.18 - - [28/Apr/2014:12:59:12 +0400] "PUT
/s/archive/screenshots/201404281043/000142.jpg HTTP/1.1" 201 25 "-"
"curl/7.26.0"

Вот фрагмент debug-лога:

2014/04/28 12:59:12 [debug] 5297#0: *404 http run request:
"/s/archive/screenshots/201404281043/000142.jpg?"
2014/04/28 12:59:12 [debug] 5297#0: *404 http read client request body
2014/04/28 12:59:12 [debug] 5297#0: *404 recv: fd:17 3592 of 3592
2014/04/28 12:59:12 [debug] 5297#0: *404 http client request body recv 3592
2014/04/28 12:59:12 [debug] 5297#0: *404 http body new buf t:1 f:0
01EC7E00, pos 01EC7E00, size: 5200 file: 0, size: 0
2014/04/28 12:59:12 [debug] 5297#0: *404 http client request body rest 0
2014/04/28 12:59:12 [debug] 5297#0: *404 event timer del: 17: 1398675612105
2014/04/28 12:59:12 [debug] 5297#0: *404 http write client request body,
bufs 01EBF818
2014/04/28 12:59:12 [debug] 5297#0: *404 write: 19, 01EC7E00, 5200,
98304
2014/04/28 12:59:12 [debug] 5297#0: *404 http script copy:
"/disks/screenshots/"
2014/04/28 12:59:12 [debug] 5297#0: *404 http script var: "20140428"
2014/04/28 12:59:12 [debug] 5297#0: *404 http script copy: "/"
2014/04/28 12:59:12 [debug] 5297#0: *404 http script var: "000142"
2014/04/28 12:59:12 [debug] 5297#0: *404 http script copy: "-"
2014/04/28 12:59:12 [debug] 5297#0: *404 http script var: "201404281043"
2014/04/28 12:59:12 [debug] 5297#0: *404 http script copy: "."
2014/04/28 12:59:12 [debug] 5297#0: *404 http script var: "jpg"
2014/04/28 12:59:12 [debug] 5297#0: *404 http put filename:
"/disks/screenshots/20140428/
000142-201404281043.jpgs2.domain.example.com"
2014/04/28 12:59:12 [debug] 5297#0: *404 HTTP/1.1 201 Created
Server: nginx/1.7.0
Date: Mon, 28 Apr 2014 08:59:12 GMT
Content-Length: 0
Location:
http://s2.domain.example.com/s/archive/screenshots/201404281043/000142.jpg
Connection: keep-alive

Ну и результат:

# find /disks/screenshots/
/disks/screenshots/
/disks/screenshots/20140428
/disks/screenshots/20140428/000142-201404281043.jpgs2.domain.example.com

Версия:

# /usr/sbin/nginx.debug -V
nginx version: nginx/1.7.0
built by gcc 4.7.2 (Debian 4.7.2-5)
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx
--conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid
--lock-path=/var/run/nginx.lock
--http-client-body-temp-path=/var/cache/nginx/client_temp
--http-proxy-temp-path=/var/cache/nginx/proxy_temp
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
--http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx
--with-http_ssl_module --with-http_realip_module
--with-http_addition_module --with-http_sub_module --with-http_dav_module
--with-http_flv_module --with-http_mp4_module --with-http_gunzip_module
--with-http_gzip_static_module --with-http_random_index_module
--with-http_secure_link_module --with-http_stub_status_module
--with-http_auth_request_module --with-mail --with-mail_ssl_module
--with-file-aio --with-http_spdy_module --with-cc-opt='-g -O2
-fstack-protector --param=ssp-buffer-size=4 -Wformat
-Werror=format-security -Wp,-D_FORTIFY_SOURCE=2'
--with-ld-opt='-Wl,-z,relro -Wl,--as-needed' --with-ipv6 --with-debug

Вопрос. Откуда берется домен в имени файла и как это побороть?

Спасибо!

-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: проверка конфигов из скрипта

2014-03-25 Пенетрантность Vadim Lazovskiy
Здравствуйте.

root@fs1:~# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is
successful
root@fs1:~# echo $?
0
root@fs1:~# echo zzz >> /usr/local/nginx/conf/nginx.conf
root@fs1:~# /usr/local/nginx/sbin/nginx -t
nginx: [emerg] unexpected end of file, expecting ";" or "}" in
/usr/local/nginx/conf/nginx.conf:248
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
root@fs1:~# echo $?
1

Проверять exitcode команды любым удобным способом.
Можно /usr/local/nginx/sbin/nginx -t && kill -HUP `cat /var/run/nginx.pid`


25 марта 2014 г., 15:33 пользователь denis  написал:

> if [ "`/usr/local/sbin/nginx -t | grep 'syntax is ok'`" != '' ] ; then
>
> Говорит что всё ок, но не работает... А как тогда?
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: доступ к конфигурации модуля в хуке init_process

2014-03-23 Пенетрантность Vadim Lazovskiy
Здравствуйте.

cf = ngx_http_cycle_get_module_main_conf(cycle, your_module);

как-то так, вроде.


23 марта 2014 г., 6:56 пользователь Sergei Shilovsky
написал:

> Добрый день.
>
> Пишу модуль, в конфиге есть такой блок:
>
> `http { pgconfig_connection "host=localhost dbname=db ..."; ... }`
>
> Эта строка используется для подключения к БД, причем на каждый рабочий
> процесс планируется одно подключение.
>
> Сейчас для этого в `init_main_conf` дублирую строку в глобальную
> переменную, которую использую в `init_process`.
>
> Но интересно, есть ли надежный (и простой) способ в хуке `init_process`
> получить доступ к конфигурации модуля по структуре `ngx_cycle_t`?
>
> Если нет, подскажите, пожалуйста, как правильно инициализировать
> соединение процесса.
>
> Спасибо
>
> --
> С уважением,
> Сергей Шиловский
> Sergei Shilovsky
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Не работает upstream keepalive в связке с fastcgi-c бэкэндом

2013-12-22 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Запустите, например 24 инстанса вашего демона на разных портах.
Всех их пропишите под один upstream. Метод балансировки least_conn,
keepalive выключите.

Тогда ваш сервис сможет обслуживать до 24 одновременных соединений,
остальные будут ждать.

А еще лучше запилить хоть какое-то мультиплексирование на вашем
fastcgi-бакенде.


22 декабря 2013 г., 22:24 пользователь Helg  написал:

> Ок.
> Тогда прошу пояснить, как правильно все настроить.
> Дано:
> 1. Однопоточный быстрый бэкэнд, который можно запустить в любом количестве
> копий
> 2. Сервер с 12 ядрами (24 потока в режиме гиперттединга)
> 3. Клиент, присылающий запросы в 16 потоков
>
> То есть, нужно:
> - выбрать правильное число воркеров = W
> - запустить B копий бэкэнда
> - прописать K в keepalive
>
> Помогите пожалуйста. Опишите зависимость между этими числами и как
> подобрать
> оптимальный конфиг?
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,245757,245764#msg-245764
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Nginx online upgrade & systemd

2013-12-16 Пенетрантность Vadim Lazovskiy
Спасибо!


14 декабря 2013 г., 1:21 пользователь Konstantin Baryshnikov <
konstan...@symbi.org> написал:

> On Dec 14, 2013, at 1:09 AM, Vadim Lazovskiy 
> wrote:
>
> > Nginx запускается вот так:
> > /usr/sbin/nginx -g daemon off;
> >
> > Видимо чтобы systemd мог следить за master-процессом.
>
> С daemon off апгрейд вряд ли будет правильно работать.
>
> Можно вместо этого написать в systemd nginx.service так:
>
> [Service]
> Type=forking
> PIDFile=/path/to/nginx.pid
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: патч для отключения заголовков "Connection: keep-alive" (еще раз)

2013-12-16 Пенетрантность Vadim Lazovskiy
Здравствуйте.

это 34 мегабайта в день? Похоже на экономию на спичках.
При 100 000 r/s это 2 мегабайта в секунду. Не велика экономия.

curl -s -D - https://vk.com -o /dev/null | wc -c
328

curl -s -D - https://vk.com -o /dev/null | sed '/Connection: keep-alive/d'
| wc -c
304

Чуть меньше 8% на заголовках.
Это при том, что, как правило, сама страница, скрипты, продолжают содержать
отступы, \n, а местами и \r.



16 декабря 2013 г., 12:45 пользователь Илья Шипицин
написал:

> практический смысл в экономии трафика. при наших нагрузках экономия
> достигает 1 гигабайт в месяц (и у нас еще не такой HighLoad, как у
> многих в этой рассылке). это не копейки.
> если вы мыслите про каналы в терминах " у меня канал 10 гигабит, мне
> без разницы", подумайте о пользователях,  на 3G эти "копейки" очень
> существенны.
>
> нешуточный спор возник, как лучше проверять условие, либо " < HTTP11",
> либо " = HTTP10"
> принципиального спора "включать этот патч или не включать" нет.
>
> 16 декабря 2013 г., 12:34 пользователь Алексей Сундуков
>  написал:
> > А практический смысл? В голову приходит лишь мысль об экономии трафика,
> но
> > -1 заголовок это же копейки. Просто хочется понять, почему из-за такой
> вроде
> > бы мелочи разгорелся такой нешуточный диалог и тема вообще требует
> > отдельного патча.
> >
> >
> > 16 декабря 2013 г., 8:11 пользователь Илья Шипицин  >
> > написал:
> >
> >> 16 декабря 2013 г., 0:42 пользователь Алексей Сундуков
> >>  написал:
> >> >>идея в том, что отправка заголовка "Connection: keep-alive"
> >> >> в большинстве случаев не нужна.
> >> >
> >> > А можно для танкистов пояснить, почему? Потому что http1.1 и так
> скорее
> >> > всего persistent?
> >>
> >> ответов в данном случае два:
> >>
> >> теоретически так делать можно, потому что это разрешено по RFC 2616 для
> >> HTTP/1.1
> >>
> >> практически так делать можно, потому что ровно так делает IIS (по
> >> любым оценкам у него доля рынка - десятки процентов), и при этом ни у
> >> кого никаких проблем не возникает.
> >>
> >> >
> >> > ___
> >> > nginx-ru mailing list
> >> > nginx-ru@nginx.org
> >> > http://mailman.nginx.org/mailman/listinfo/nginx-ru
> >> ___
> >> nginx-ru mailing list
> >> nginx-ru@nginx.org
> >> http://mailman.nginx.org/mailman/listinfo/nginx-ru
> >
> >
> >
> > ___
> > nginx-ru mailing list
> > nginx-ru@nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx-ru
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Nginx online upgrade & systemd

2013-12-13 Пенетрантность Vadim Lazovskiy
Здравствуйте.

В таргете upgrade -QUIT.
Это работает, воркеры начинают завершаться, вслед за ними старый мастер.
После смерти мастера умирает все.

Nginx запускается вот так:
/usr/sbin/nginx -g daemon off;

Видимо чтобы systemd мог следить за master-процессом.

13 декабря 2013 г., 19:23 пользователь Vadim A. Misbakh-Soloviov <
m...@mva.name> написал:

> Так после USR2 Надо не QUIT а WINCH же слать, не?
>
>
>


-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Nginx online upgrade & systemd

2013-12-13 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Пробовал ли кто обновлять nginx налету?

После USR2 все запускается, после QUIT, старое начинает умирать.
Ускорил TERM-ами, после убийства последнего старого воркера вышел и старый
мастер-процесс и новые процессы.

В логе:
2013-12-13T18:47:47.896165+04:00 srv03 systemd[1]: nginx.service: control
process exited, code=exited status=1
2013-12-13T18:47:47.929207+04:00 srv03 systemd[1]: Unit nginx.service
entered failed state.

Подскажите, обновление без перерыва принципиально не возможно при
использовании systemd или же есть какой-то способ?

-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: логика работы Host при проксировании

2013-11-26 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Host здесь ни при чем.
Смотреть нужно в сторону proxy_redirect:
http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_redirect


26 ноября 2013 г., 15:58 пользователь denis написал:

> Добрый день.
>
> Не могу понять логику работы с Host. Есть приложение, которое надо
> проксировать на нестандартном порту (пример конфига)
>
> server
> {
> listen *:8080;
>
> server_name aaa.spb.ru;
>
> include conf.all/tunes-main.conf;
>
> location / {
> proxy_redirect off;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For
> $proxy_add_x_forwarded_for;
> proxy_set_header Host $host;
>
> proxy_pass http://192.168.2.32:8080;
> }
> }
>
> При обращении там идут редиректы, при этом Location возвращается без
> указания порта (8080) и поэтому ничего не работает.
> При этом установка
> proxy_set_header Host aaa.spb.ru:8080;
> после блока proxy_set_header также ничего не дает - этот блок вынесен в
> отдельный файл для всех сайтов.
>
> Но стоит убрать строку  proxy_set_header Host $host; - и порт нормально
> появляется в редиректе. В чём логика? Host нельзя переопределить 2 строкой?
> или при этом уходит запрос с 2 хостами и система сама выбирает что больше
> нравится? или как? И как тогда правильнее задать в выносном блоке, можно ли
> как Host $host$port? Или просто не добавлять, а для секции с изменением
> порта - задавать Host уже в нужном location?
>
> И попутно мелкий вопросик: была ситуация наоборот, проксируем запрос
> внутрь с 80 порта на 8080, пока явно не прописали Host $host:80; -
> периодически порт 8080 проявлялся в адресной строке. Хотя на десятке других
> серверов такого не было, при том что секция одинаковая.
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Уточнение логики работы ngx_http_auth_request_module

2013-11-05 Пенетрантность Vadim Lazovskiy
Должно работать и без internal


5 ноября 2013 г., 15:14 пользователь Dzmitry Stremkouski
написал:

> Вадим, здравствуйте!
> Я могу сделать его internal, но мне этот локейшн нужен извне, также.
> Или от этого ломается логика модуля Максима?
>
>
> On Tue, Nov 5, 2013 at 3:13 PM, Vadim Lazovskiy  > wrote:
>
>> Здравствуйте.
>>
>> location /jenkins {
>> auth_request /auth;
>>
>> ...
>> }
>>
>> location = /auth {
>>  internal;
>>
>>  if ($ip_range) {
>>  return 200;
>>  }
>>
>>  proxy_pass http://your_authentication_backend;
>>  ...
>> }
>>
>> ?
>>
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
>
> --
> 
> (o_ - Dzmitry Stremkouski.
> //\ - cel: +7 (916) 090-85-68
> V_/_- web: http://mitroko.com
> 
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Уточнение логики работы ngx_http_auth_request_module

2013-11-05 Пенетрантность Vadim Lazovskiy
Здравствуйте.

location /jenkins {
auth_request /auth;

...
}

location = /auth {
 internal;

 if ($ip_range) {
 return 200;
 }

 proxy_pass http://your_authentication_backend;
 ...
}

?
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: WebDav на Windows

2013-10-15 Пенетрантность Vadim Lazovskiy
Здравствуйте.

На данный момент Nginx поддерживает не все методы необходимые для
полноценной работы WebDav.
Но есть 3rd party модуль: https://github.com/arut/nginx-dav-ext-module
реализующий
методы OPTIONS и PROPFIND


15 октября 2013 г., 14:45 пользователь antarey написал:

> Здравствуйте. Помогите поднять webdav с помощью nginx на Windows.
> Скачал  nginx/Windows-1.5.6
> Согласно инстукций настроил вебдав
> вот конф
>
> #user  nobody;
> worker_processes  1;
>
> error_log  logs/error.log;
> #error_log  logs/error.log  notice;
> #error_log  logs/error.log  info;
>
> #pidlogs/nginx.pid;
>
>
> events {
> worker_connections  1024;
> }
>
>
> http {
> include   mime.types;
> default_type  application/octet-stream;
>
> #log_format  main  '$remote_addr - $remote_user [$time_local]
> "$request"
> '
> #  '$status $body_bytes_sent "$http_referer" '
> #  '"$http_user_agent" "$http_x_forwarded_for"';
>
> #access_log  logs/access.log  main;
>
> sendfileon;
> #tcp_nopush on;
>
> #keepalive_timeout  0;
> keepalive_timeout  65;
>
> #gzip  on;
>
> server {
> listen   8080;
> server_name  webdav;
>
> charset utf-8;
>
> #access_log  logs/host.access.log  main;
>
> location / {
> auth_basic   "Закритий сайт";
> auth_basic_user_file ./conf/htpasswd;
> roothtml;
> client_body_temp_path ./temp/client_body_temp;
> dav_methods PUT DELETE MKCOL COPY MOVE;
> create_full_put_path  on;
> dav_access user:rw group:rw all:rw;
>
> limit_except GET {
> allow 127.0.0.1;
> deny  all;
> }
> #root   html;
> #index  index.html index.htm;
>
> }
>
> #error_page  404  /404.html;
>
> # redirect server error pages to the static page /50x.html
> #
> ##error_page   500 502 503 504  /50x.html;
> ##location = /50x.html {
> ##root   html;
> ##}
>
> Если удаляю index.htm   получаю 403 ошибку. Подключить диск net use *
> 127.0.0.1:8080 не могу - сетевой ресурс не доступен
> Что я делаю не так??? или надо перекомпилировать  ?? - если да то как сие
> реализовать в винде?
> И второй вопрос - как раздавать конкретным пользователям конкретные права
> на
> конкретные папки?
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,243701,243701#msg-243701
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Вопрос по client body in file only в контексте file upload

2013-10-14 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Директива client_body_in_file_only как раз предназначена для того,
> чтобы лишний раз не гонять тело запроса в рамках одной машины, а
> записать его на диск и передать на обработку бекенду уже файл.  И
> та же функциональность используется в модуле DAV, но уже в рамках
> самого nginx'а.


Достаточно сомнительная экономия.
PHP, например, этот файл прочитает и все равно запишет свой(-и)
отдельный(-ые) - то что извлек из тела запроса.

Ну это так, ностальгия по upload-module Валерия Холодкова.

-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Как получить POST-запрос в собственном модуле?

2013-09-17 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Для примера можно посмотреть как ngx_http_dav_handler обрабатывает
NGX_HTTP_PUT в src/http/modules/ngx_http_dav_module.c


17 сентября 2013 г., 11:01 пользователь Aleus Essentia  написал:

> День добрый!
> Пишу модуль для работы с одной программой. Get-запросы и http-заголовок
> легко получаю, а как получить аргументы POST-запрос от клиента ума не
> приложу
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,242907,242907#msg-242907
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: 400 Bad Request 1.5.4 (1.5.3 = OK)

2013-09-01 Пенетрантность Vadim Lazovskiy
http://nginx.org/ru/docs/http/ngx_http_core_module.html#listen

"Если у директивы есть параметр default_server, то сервер, в котором
описана эта директива, будет сервером по умолчанию для указанной пары *адрес
*:*порт*. Если же директив с параметром default_server нет, то сервером по
умолчанию будет первый сервер, в котором описана пара *адрес*:*порт*."

Возможно ваш server не первый для этой пары listen. Скорее всего ошибка
попадает в error_log другого сервера, поскольку на этапе разбора request
line еще не известен server который будет обслуживать этот запрос.

Попробуйте:

- listen 80;
+  listen 80 default_server;

если это не критично.



2013/9/1 locojohn 

> > Это единственный сервер для listen 80?
>
> Нет.
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,242399,242409#msg-242409
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: 400 Bad Request 1.5.4 (1.5.3 = OK)

2013-09-01 Пенетрантность Vadim Lazovskiy
Это единственный сервер для listen 80?


2013/9/1 locojohn 

> /var/log/cm.access_log:
>
> 191.128.53.162 - - [01/Sep/2013:12:54:52 +0200] "GET
>
> /??/_common/jquery/jquery-1.7.1.min.js,/_common/jquery/ui/jquery-ui-1.8.17.custom.min.js,/_common/jquery/jquery.cookie.min.js,/_common/jquery/jquery.json.min.js,/_common/jquery/json3.min.js,/_common/jquery/jquery.cookiejar.min.js,/_common/jquery/jquery.blockUI.min.js,/_common/jquery/jquery.spin.min.js,/_common/jquery/jquery.toggleElements.min.js,/_common/jquery/linkselect/lib/jquery.linkselect.min.js,/_common/jquery/jquery.tablesorter.min.js,/_common/jquery/jquery.asmselect.mod.js,/_common/jquery/brTip.src.js,/_common/jquery/validate/jquery.validate.min.js,/_common/jquery/jqGrid-4.5.2/js/i18n/grid.locale-en.js,/_common/jquery/jqGrid-4.5.2/js/jquery.jqGrid.min.js,/_common/jquery/jqGrid-4.5.2/plugins/grid.setcolumns.js,/js/ui.imageuploader.js
> HTTP/1.1" 400 338
>
> /var/log/cm.error_log:
>
> 2013/09/01 12:53:48 [info] 12848#0: *1 client 91.188.52.162 closed
> keepalive
> connection
> 2013/09/01 12:54:00 [info] 12848#0: *5 client 91.188.52.162 closed
> keepalive
> connection
> 2013/09/01 12:54:46 [info] 12848#0: *6 client 91.188.52.162 closed
> keepalive
> connection
> 2013/09/01 12:54:49 [info] 12848#0: *8 client 91.188.52.162 closed
> keepalive
> connection
> 2013/09/01 12:55:45 [info] 12848#0: *19 client 91.188.52.162 closed
> keepalive connection
> 2013/09/01 12:55:45 [info] 12848#0: *16 client 91.188.52.162 closed
> keepalive connection
> 2013/09/01 12:55:45 [info] 12848#0: *15 client 91.188.52.162 closed
> keepalive connection
> 2013/09/01 12:55:45 [info] 12848#0: *17 client 91.188.52.162 closed
> keepalive connection
> 2013/09/01 12:55:45 [info] 12848#0: *14 client 91.188.52.162 closed
> keepalive connection
>
> /var/log/error_log: (main)
>
> 2013/09/01 12:53:40 [notice] 12846#0: using the "epoll" event method
> 2013/09/01 12:53:40 [notice] 12846#0: nginx/1.5.4
> 2013/09/01 12:53:40 [notice] 12846#0: OS: Linux 3.9.11-gentoo-r1-mrbyte
> 2013/09/01 12:53:40 [notice] 12846#0: getrlimit(RLIMIT_NOFILE): 1:3
> 2013/09/01 12:53:40 [notice] 12847#0: start worker processes
> 2013/09/01 12:53:40 [notice] 12847#0: start worker process 12848
> 2013/09/01 12:53:40 [notice] 12847#0: start worker process 12849
> 2013/09/01 12:53:40 [notice] 12847#0: start worker process 12850
> 2013/09/01 12:53:40 [notice] 12847#0: start worker process 12852
>
>
> nginx.conf:
>
> server {
> listen 80;
> server_name devel.coursemanagement.bimv.com;
>
> access_log /var/log/nginx/cm.access_log main;
> error_log /var/log/nginx/cm.error_log info;
>
> root /opt/www/cm;
>
> location / {
>   index index.php;
> }
>
> ..
>
> }
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,242399,242406#msg-242406
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: 400 Bad Request 1.5.4 (1.5.3 = OK)

2013-09-01 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Емнип, 400 ответ всегда логгируется в error log.
Скорее всего ошибка попадает в лог того server, что является по-умолчанию
для конкретной пары адрес:порт в listen.


1 сентября 2013 г., 14:31 пользователь locojohn написал:

> Странно, но абсолютно ничего.  Я бы написал если бы было чего.
>
> error_log /var/log/nginx/cm.error_log info;
>
> Андрей
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,242399,242404#msg-242404
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: GEO модуль и количество префиксов

2013-08-27 Пенетрантность Vadim Lazovskiy
Здравствуйте.

У нас 2М (сконверченая geoip база). Памяти жрет много, да, но на скорость
ответов практически не влияет.
Данные хранятся в radix tree. Поиск по ней не сильно зависит от количества
префиксов и имеет прогнозируемое время.
Грубо говоря до 32 итераций для адресов /32.


27 августа 2013 г., 11:33 пользователь Gelun, Artem  написал:

> Меньше миллиона ))
> Интересует как раз при каком кол-ве префиксов начнётся влияние на время
> ответа. 1000? 10К? 100К?
>
>
>
> 26 августа 2013 г., 15:18 пользователь Anton Yuzhaninov 
> написал:
>
> On 08/23/13 21:51, Gelun, Artem wrote:
>>
>>> Подскажите пожалуйста какое максимальное количество префиксов в
>>> GEO-модуле
>>> допустимо?
>>>
>>
>> Зависит только от объема RAM, но стоит учитывать, что при большом числе
>> префиксов возрастет нагрузка на CPU (и время ответа).
>>
>> Если у вас больше миллиона префиксов, то стоит подумать об уменьшении их
>> числа.
>>
>> __**_
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/**mailman/listinfo/nginx-ru<http://mailman.nginx.org/mailman/listinfo/nginx-ru>
>
>
>
> _______
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Изменение процедуры обновления кэша

2013-08-24 Пенетрантность Vadim Lazovskiy
Здравствуйте.

http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_cache_lock


24 августа 2013 г., 14:29 пользователь stitrace написал:

> Опишу некоторые, особенности работы модуля PURGE nginx, с которыми я
> столкнулся и которые затрудняют его использование в hi-load:
>
> Как известно, механизм purge в nginx призван для управления кэшем,
> единственным его предназначением является очистка кэша для необходимого
> урла
> на сайте.
>
> Мы могли бы закэшировать страницу с урлом http:://mysite.ru/main/, к
> примеру, на сутки и реализовать в форме отправки сообщения нашего сайта
> инициацию запроса http:://mysite.ru/purge/main/, который, при должной
> конфигурации, очистит кэш для страницы /main/. На первый взгляд, всё
> выглядит идеально и придраться не к чему, но если разобраться, то не так
> всё
> гладко, когда дело касается hi-load. Дело в том, что nginx производит
> очистку кэша в таком порядке:
>
> a) После выполнения PURGE запроса он удаляет закэшированную копию страницы
> из хранилища.
> б) Ждёт сгенерированную, новую страницу от бэкэнда.
> в) Отдаёт её пользователю и кладёт в кэш, далее продолжая раздавать её
> пользователям.
>
> Всё шикарно, но при выполнении пункта "б" он, если к нему обращается
> клиент,
> не находя страницу у себя в кэше, пропускает все запросы к фронтэнду.
>
> Теперь допустим сценарий, ваша страница /main/ генерируется на бэкэнде 1
> секунду и он настроен таким образом, что максимальное количество клиентов
> на
> нём не должно превышать 300. Посещаемость /main/ - 600 запросов в секунду,
> каждый новый клиент увеличивает время отработки запроса к фронтэнду на
> 0.3%.
> Мы видим, что, количество клиентов, которые пройдут на бэкэнд, превышает в
> два раза разрешённый лимит, а время выполения запроса, в первые полсекунды,
> будет расти по экспоненте и скрипт, в лучшем случае, завершит работу через
> несколько секунд, а в худшем, бэкэнд вернёт 502 ошибку, из-за ограничений
> на
> время выполнения кода на фронтэнде, то есть, фактически, уронит ваш проект.
>
> Точно такая же ситуация будет, если элемента ещё нет в кэше и на него
> внезапно начинают обращаться пользователи (допустим произошла публикация
> новой страницы).
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,242182,242182#msg-242182
>
> _______
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Влияние memcached на кэширование

2013-08-21 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Из википедии: "304 Not Modified -- сервер возвращает такой код, если клиент
запросил документ методом GET, использовал заголовок If-Modified-Since или
If-None-Match и документ не изменился с указанного момента. При этом
сообщение сервера не должно содержать тела. Появился в HTTP/1.0."

nginx не может знать изменилось ли содержимое в memcached.
Видимо, поэтому 200.


21 августа 2013 г., 11:46 пользователь prokhorov.64
написал:

> При использовании memcached пользователь получает 200, хотя должно
> возвращать 304. Как сделать, чтобы пользователь получал 304?
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,242066,242066#msg-242066
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: релоад конфига

2013-08-15 Пенетрантность Vadim Lazovskiy
А нет ли где в логах  "too many open files"?


15 августа 2013 г., 3:30 пользователь Nick Knutov  написал:

> ок, собрал то же, что было, с дебагом, нгинх заодним обновил до 1.5.3.
>
> Что искать в дебаг логе? Я не вижу там никаких признаков получения
> сигнала, однако, например, посылание сигналов QUIT и TERM прекрасно
> работает.
>
> 14.08.2013 17:58, Gena Makhomed пишет:
> > On 14.08.2013 14:02, Nick Knutov wrote:
> > [...]
> >> Проблема на первом сервере стабильно воспроизводится.
> >
> > причину проблем может помочь понять отладочный лог:
> > http://nginx.org/ru/docs/debugging_log.html
> >
> > параметр --with-debug много оверхеда не добавляет,
> > но очень удобен при поиске причин различных проблем.
> >
>
> --
> Best Regards,
> Nick Knutov
> http://knutov.com
> ICQ: 272873706
> Voice: +7-904-84-23-130
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: релоад конфига

2013-08-14 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Попробуйте собрать без
--with-file-aio


15 августа 2013 г., 3:30 пользователь Nick Knutov  написал:

> ок, собрал то же, что было, с дебагом, нгинх заодним обновил до 1.5.3.
>
> Что искать в дебаг логе? Я не вижу там никаких признаков получения
> сигнала, однако, например, посылание сигналов QUIT и TERM прекрасно
> работает.
>
> 14.08.2013 17:58, Gena Makhomed пишет:
> > On 14.08.2013 14:02, Nick Knutov wrote:
> > [...]
> >> Проблема на первом сервере стабильно воспроизводится.
> >
> > причину проблем может помочь понять отладочный лог:
> > http://nginx.org/ru/docs/debugging_log.html
> >
> > параметр --with-debug много оверхеда не добавляет,
> > но очень удобен при поиске причин различных проблем.
> >
>
> --
> Best Regards,
> Nick Knutov
> http://knutov.com
> ICQ: 272873706
> Voice: +7-904-84-23-130
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Проксирование по referrer

2013-06-23 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Блок map только декларируется на уровне http. Вычисление значения
переменной происходит только при обращении к ней.


24 июня 2013 г., 8:38 пользователь ad...@sysadmins.el.kg <
ad...@sysadmins.el.kg> написал:

> Да, согласен, задача весьма нетривиальная. Оттого и прошу помощи.
> Предложеный вариант с использованием map не подходит потому, что map
> работает в блоке http, мне же критично запускать его из server.
>
>  Вкратце о приложении - веб-страница, хрянящаяся на site[1-9].tld и
> загружаемая на сторонние сайты посредством   На каждом
> бэкенде она разная, количество бэкендов растет в геометрической прогресии,
> а некоторые сайты, внедряющие к себе это приложение (напр. facebook)
> требуют ssl-шифрование. Чтобы избежать каши с ssl-сертификацией всех
> бэкендов было сочтено целесообразным использование прокси, шифрующего
> соединения, и проксирующего на http-бэкенды.
>
>
>  как-то так можно попробовать вытащить
>>
>> map $http_referer $backend {
>>default -;
>>~*(?[^\;]+)(?:\;|$) $b;
>> }
>>
>>
>> это решит "грабли No.1", но задача в целом выглядит весьма запутанной.
>>
>>
>> 21 июня 2013 г., 16:45 пользователь ad...@sysadmins.el.kg
>>  написал:
>>
>>> Доброго всем дня.
>>>
>>> Пытаюсь поднять сервер для проксирования некоего узкоспециализированого
>>> приложения.  Аппликуха у себя формирует ссылки на него, с указанием в
>>> качестве реферала ссылку на один из серверов за ним.
>>> Т.е. в теории это должно выглядеть сл. образом - посетитель жмет на сайте
>>> ссылку ведущую на site.tld, прокси на этом самом site.tld разобрав
>>> $http_referrer извлекает из него ссылку к site[1-9].tld дописывает ему в
>>> куку адрес нужного из этих самых site[1-9].tld и отправляет на
>>> соответствующий сервер. Ну а дальнейшие обращения уже на основе кук.
>>>
>>> Грабли No.1: - предполагал указать адрес прокси в виде переменной:
>>>
>>> if ($http_referer ~* "*\.*") {
>>> set $backend "извлеченный из реферала домен";
>>> }
>>> location / {
>>>  proxy_pass http://$backend;
>>> ...
>>> Только как?
>>>
>>> Грабли No.2: то же что и Грабли1 только с куками.
>>>
>>> __**_
>>> nginx-ru mailing list
>>> nginx-ru@nginx.org
>>> http://mailman.nginx.org/**mailman/listinfo/nginx-ru<http://mailman.nginx.org/mailman/listinfo/nginx-ru>
>>>
>> ______**_
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/**mailman/listinfo/nginx-ru<http://mailman.nginx.org/mailman/listinfo/nginx-ru>
>>
>
> __**_
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/**mailman/listinfo/nginx-ru<http://mailman.nginx.org/mailman/listinfo/nginx-ru>
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: ограничение скорости

2013-06-23 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Думаю, стоит взглянуть: http://mdounin.ru/hg/ngx_http_ip_tos_filter_module/
Трафик далее зашейпить.


24 июня 2013 г., 1:06 пользователь muhas  написал:

> 503 отдавать? Мне надо скорость ограничить, а не посетителей что не влазят
> выгонять...
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,240203,240290#msg-240290
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: proxy redirect не происходит изменение Location

2013-05-31 Пенетрантность Vadim Lazovskiy
Здравствуйте.

В debian еще, вроде, нет пакета без сторонних модулей. Лично я использую
репы http://nginx.org/en/linux_packages.html#stable
чего и вам всем желаю.


31 мая 2013 г., 20:48 пользователь denis  написал:

> 31.05.2013 17:53, Валентин Бартенев пишет:
>
>
>>  извинте сразу не указал
>>> ОС Centos 6.2
>>> nginx 1.0.15-5.el6
>>>
>>>  Смените антиквариат на актуальную версию, и всё будет работать.
>>
> Вы ещё дебилян не видели :)
> cat /etc/debian_version
> 6.0.7
>
> nginx -v
> nginx version: nginx/0.7.67
>
> вот где г-но мамонта. А 1.0.* это уже почти свежак )))
>
>
> __**_
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/**mailman/listinfo/nginx-ru<http://mailman.nginx.org/mailman/listinfo/nginx-ru>
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Поиск файлов в каталогах

2013-05-30 Пенетрантность Vadim Lazovskiy
Да, последний параметр для try_files -  =404, например.
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Поиск файлов в каталогах

2013-05-30 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Если список каталогов конечный, то можно забить их все в try_files:

location /files/ {
location ~ ^/files/(?.*)$ {
try_files /files/2013/$filename
/files/2012/$filename
/files/2011/$filename
...;
}
}

Как-то так.


30 мая 2013 г., 14:18 пользователь plushka  написал:

> Добрый день.
>
> Помогите решить задачу:
>
> Есть веб-сервер nginx с root /www/ftp/files, который раздает статические
> файлы (скриншоты).
> Скринов со временем стало много и я  решил разложить из на 2010 | 2011 |
> 2012 года, в подкаталоги.
>
> пример URL -  http://screen.tld/files/20101223-ppc-58kb.jpg
>
> Дело в том что http://screen.tld/files/ - это root веб-сервера. А сам файл
> уже перенесен в каталог 2010. Файлов много и не только 2010 года. Как
> написать конфиг с учетом "пробежать" по подкаталогам в поисках файла и
> отдать его по ссылке выше?
>
> Огромное спасибо, за любую помощь. Если нужны подробности пишите, буду
> стараться описать подробнее.
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,239685,239685#msg-239685
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: 502-е в почту

2013-05-22 Пенетрантность Vadim Lazovskiy
Здравствуйте.

У вас accept_filter не подпускает плохие запросы к nginx-y. И по данному
конфигу нельзя утверждать, что это сервер по-умолчанию.


2013/5/23 Gaidamak 

> Перенес обработку 400 в блок сервера по дефолту.
>
> server {
> server_tokens off;
>listen 80 accept_filter=httpready;
> recursive_error_pages on;
>
> error_page 400 = @400;
>
> location @400 {
> access_log /var/log/nginx-400.log custom_db;
> error_page 418 /empty;
> return 400;
> }
> location /
> {
> access_log   off;
> empty_gif;
> }
> }
>
>
> include sites/*.conf;
> }
>
> Не работает.
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,239411,239458#msg-239458
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: 502-е в почту

2013-05-22 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Не проще ли сваливать все 502 ошибки через error_page в один location. В
нем определить custom-ный формат лога (дата, хост, запрос) и в режиме tail
-f разбирать его как угодно.
Никаких блокировок и зависимостей от сторонних модулей.


22 мая 2013 г., 11:56 пользователь Gaidamak  написал:

> О, точно есть. А как этот скрипт себя ведет в случае массового
> возникновения
> 502-х?
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,239411,239416#msg-239416
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: proxy pass через переменную не работает

2013-05-16 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Задайте http://nginx.org/ru/docs/http/ngx_http_core_module.html#resolver в
конфиге.



2013/5/17 bespechnost 

> Пробую так:
> location  /omlet_api/ {
> proxy_pass http://$arg_server/;
> proxy_set_header  Host $arg_server;
> break;
> }
>
> В логах:
> ==> localhost.error_log <==
> 2013/05/17 08:48:59 [error] 16907#0: *1 no resolver defined to resolve
> ya.ru, client: 127.0.0.1, server: localhost, request: "GET
> /omlet_api/genres/?server=ya.ru HTTP/1.1", host: "localhost"
>
> Если заменить $arg_server на имя сервера, то все работает.
>
> Версия NGINX - 1.2.6-r1
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,239286,239286#msg-239286
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx доступ к странице по времени

2013-04-05 Пенетрантность Vadim Lazovskiy
Не будет.


5 апреля 2013 г., 15:18 пользователь heroin  написал:

> Спасибо за ответы.
>
> Подскажите, если nginx -V не выводит в списке ключей
> --with-http_perl_module, то перл работать не будет ?
>
> Я прошу прощения за такие вопросы, на nginx смотрю второй день, а задача
> стоит приоритетная.
> Еще раз всем спасибо.
>
> Vadim Lazovskiy Wrote:
> ---
> > День недели с мапом - никак. На перле что-то примерно такое:
> >
> > http {
> >
> > perl_set $forbidden 'sub {
> > ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)
> > =
> > localtime(time);
> >
> > if($wday > 0 && $wday < 6 && $hour > 9 && $hour < 18)
> > {
> > return 0;
> > }
> >
> > return 1;
> > }';
> >
> >server {
> > location ... {
> >   ...
> >   if ($forbidden) {
> >   ...
> >   }
> > }
> >    }
> > }
> >
> >
> > 5 апреля 2013 г., 14:31 пользователь heroin 
> > написал:
> >
> > > Спасибо, обновил nginx данный способ работает.
> > > А можно узнать как еще в map дни недели подсунуть ?
> > > Заранее спасибо.
> > >
> > > Vadim Lazovskiy Wrote:
> > > ---
> > > > Здравствуйте.
> > > >
> > > > Начиная с версий 1.3.12 и 1.2.7 доступна переменная $time_iso8601
> > > > (раньше
> > > > была только в log_module). Ее можно смапить в флажок доступа:
> > > >
> > > > map $time_iso8601 $hour {
> > > > "~\d{4}-\d{2}-\d{2}T(?\d{2}):" $h;
> > > > }
> > > >
> > > > map $hour $forbidden {
> > > >09 0;
> > > >10 0;
> > > >11 0;
> > > >12 0;
> > > > default 1;
> > > >
> > > > }
> > > >
> > > > ...
> > > > server {
> > > >...
> > > >location /webinar/ {
> > > >  error_page 403 /webinar_forbidden.html;
> > > >  if ($forbidden) {
> > > >return 403;
> > > >  }
> > > >}
> > > >
> > > > Можно обойтись и без промежуточной переменной $hour, забив в
> > > > регулярное
> > > > выражение нужные часы.
> > > > В более старых версиях, imho, только встроенный perl.
> > > >
> > > >
> > > > 5 апреля 2013 г., 9:15 пользователь heroin 
> > > > написал:
> > > >
> > > > > Всем добрый день.
> > > > >
> > > > > Подскажите как ограничить время доступа к странице в nginx ?
> > > > > Есть установленный BigBlueButton, нужно чтобы доступ к
> > созданному
> > > > вебинару
> > > > > был только в определенное время, а в другое время выдавалась
> > нужная
> > > > > заглушка.
> > > > > В apache я так понимаю это делается модулем mod_rewrite и
> > записью в
> > > > > .htaccess в директории с нужной страницей что то вроде
> > > > >
> > > > > Код:
> > > > > RewriteEngine on
> > > > >
> > > > > RewriteCond %{TIME_HOUR}%{TIME_MIN} > 900
> > > > > RewriteCond %{TIME_HOUR}%{TIME_MIN} < 1800
> > > > > RewriteRule .* - [ F ]
> > > > >
> > > > >
> > > > > Как сделать в nginx ?
> > > > >
> > > > > Заранее спасибо.
> > > > >
> > > > > Posted at Nginx Forum:
> > > > > http://forum.nginx.org/read.php?21,238121,238121#msg-238121
> > > > >
> > > > > ___
> > > > > nginx-ru mailing list
> > > > > nginx-ru@nginx.org
> > > > > http://mailman.nginx.org/mailman/listinfo/nginx-ru
> > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Best Regards,
> > > > Vadim Lazovskiy
> > > > ___
> > > > nginx-ru mailing list
> > > > nginx-ru@nginx.org
> > > > http://mailman.nginx.org/mailman/listinfo/nginx-ru
> > >
> > > Posted at Nginx Forum:
> > > http://forum.nginx.org/read.php?21,238121,238135#msg-238135
> > >
> > > ___
> > > nginx-ru mailing list
> > > nginx-ru@nginx.org
> > > http://mailman.nginx.org/mailman/listinfo/nginx-ru
> > >
> >
> >
> >
> > --
> > Best Regards,
> > Vadim Lazovskiy
> > ___
> > nginx-ru mailing list
> > nginx-ru@nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,238121,238138#msg-238138
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx доступ к странице по времени

2013-04-05 Пенетрантность Vadim Lazovskiy
День недели с мапом - никак. На перле что-то примерно такое:

http {

perl_set $forbidden 'sub {
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);

if($wday > 0 && $wday < 6 && $hour > 9 && $hour < 18) {
return 0;
}

return 1;
}';

   server {
location ... {
  ...
  if ($forbidden) {
  ...
  }
}
   }
}


5 апреля 2013 г., 14:31 пользователь heroin  написал:

> Спасибо, обновил nginx данный способ работает.
> А можно узнать как еще в map дни недели подсунуть ?
> Заранее спасибо.
>
> Vadim Lazovskiy Wrote:
> ---
> > Здравствуйте.
> >
> > Начиная с версий 1.3.12 и 1.2.7 доступна переменная $time_iso8601
> > (раньше
> > была только в log_module). Ее можно смапить в флажок доступа:
> >
> > map $time_iso8601 $hour {
> > "~\d{4}-\d{2}-\d{2}T(?\d{2}):" $h;
> > }
> >
> > map $hour $forbidden {
> >09 0;
> >10 0;
> >11 0;
> >12 0;
> > default 1;
> >
> > }
> >
> > ...
> > server {
> >...
> >location /webinar/ {
> >  error_page 403 /webinar_forbidden.html;
> >  if ($forbidden) {
> >return 403;
> >  }
> >}
> >
> > Можно обойтись и без промежуточной переменной $hour, забив в
> > регулярное
> > выражение нужные часы.
> > В более старых версиях, imho, только встроенный perl.
> >
> >
> > 5 апреля 2013 г., 9:15 пользователь heroin 
> > написал:
> >
> > > Всем добрый день.
> > >
> > > Подскажите как ограничить время доступа к странице в nginx ?
> > > Есть установленный BigBlueButton, нужно чтобы доступ к созданному
> > вебинару
> > > был только в определенное время, а в другое время выдавалась нужная
> > > заглушка.
> > > В apache я так понимаю это делается модулем mod_rewrite и записью в
> > > .htaccess в директории с нужной страницей что то вроде
> > >
> > > Код:
> > > RewriteEngine on
> > >
> > > RewriteCond %{TIME_HOUR}%{TIME_MIN} > 900
> > > RewriteCond %{TIME_HOUR}%{TIME_MIN} < 1800
> > > RewriteRule .* - [ F ]
> > >
> > >
> > > Как сделать в nginx ?
> > >
> > > Заранее спасибо.
> > >
> > > Posted at Nginx Forum:
> > > http://forum.nginx.org/read.php?21,238121,238121#msg-238121
> > >
> > > ___
> > > nginx-ru mailing list
> > > nginx-ru@nginx.org
> > > http://mailman.nginx.org/mailman/listinfo/nginx-ru
> >
> >
> >
> >
> > --
> > Best Regards,
> > Vadim Lazovskiy
> > ___
> > nginx-ru mailing list
> > nginx-ru@nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,238121,238135#msg-238135
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx доступ к странице по времени

2013-04-05 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Начиная с версий 1.3.12 и 1.2.7 доступна переменная $time_iso8601 (раньше
была только в log_module). Ее можно смапить в флажок доступа:

map $time_iso8601 $hour {
"~\d{4}-\d{2}-\d{2}T(?\d{2}):" $h;
}

map $hour $forbidden {
   09 0;
   10 0;
   11 0;
   12 0;
default 1;

}

...
server {
   ...
   location /webinar/ {
 error_page 403 /webinar_forbidden.html;
 if ($forbidden) {
   return 403;
 }
   }

Можно обойтись и без промежуточной переменной $hour, забив в регулярное
выражение нужные часы.
В более старых версиях, imho, только встроенный perl.


5 апреля 2013 г., 9:15 пользователь heroin  написал:

> Всем добрый день.
>
> Подскажите как ограничить время доступа к странице в nginx ?
> Есть установленный BigBlueButton, нужно чтобы доступ к созданному вебинару
> был только в определенное время, а в другое время выдавалась нужная
> заглушка.
> В apache я так понимаю это делается модулем mod_rewrite и записью в
> .htaccess в директории с нужной страницей что то вроде
>
> Код:
> RewriteEngine on
>
> RewriteCond %{TIME_HOUR}%{TIME_MIN} > 900
> RewriteCond %{TIME_HOUR}%{TIME_MIN} < 1800
> RewriteRule .* - [ F ]
>
>
> Как сделать в nginx ?
>
> Заранее спасибо.
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,238121,238121#msg-238121
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

nginx-ru@nginx.org

2013-04-04 Пенетрантность Vadim Lazovskiy
Попробовал:

location = /test {
if ($args ~ ^&) {
return 301 http://example.com/work/;
}

default_type text/plain;
return 200 $args;
}

Робит: либо выводит переменную, либо делает редирект.


4 апреля 2013 г., 13:10 пользователь skeletor написал:

> К сожалению и с args тоже не заработал. Пробовал вот так:
>
> if ($args ~* ^&) {
>  rewrite ^ http://$host permanent;
> }
>
> if ($args ~* "^&") {
>  rewrite ^ http://$host permanent;
> }
>
> if ($args ~* "^\&") {
>  rewrite ^ http://$host permanent;
> }
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,238083,238087#msg-238087
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

nginx-ru@nginx.org

2013-04-04 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Директива rewrite работает с URI, аргументы запроса туда не попадают.
Второй вариант быть может заработает, если заменить $request_uri на $args,
а регулярное выражение исправить  на ^&


4 апреля 2013 г., 12:47 пользователь skeletor написал:

> Всем привет.
> Нужно сделать редирект со страницы вида http://domain.com/?&;... на
> страницу
> http://domain.com. То есть, если строка запроса начинается с ?& - то
> просто
> перенаправить на главную. Пробовал такие варианты:
>
> [code]
> rewrite ^/?& http://$host permanent;
> [/code]
> [code]
>if ($request_uri ~* ^/?&) {
>rewrite ^ http://$host permanent;
>}
> [/code]
> а так же пробовал экранировать ? и & - не работает. Либо не перенаправляет,
> либо получаем безконечный редирект.
> Прочитал, что амперсанд используется для отделения параметров при
> GET-запросе и понял и вроде как нельзя его использовать в regexp. Или я
> неправ?
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,238083,238083#msg-238083
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Странное поведение try_files

2013-03-13 Пенетрантность Vadim Lazovskiy
Спасибо за разъяснения!


13 марта 2013 г., 15:33 пользователь Maxim Dounin написал:

> Hello!
>
> On Wed, Mar 13, 2013 at 01:38:42PM +0400, Vadim Lazovskiy wrote:
>
> > - try_files $image_path =404;
> > + alias /disks/links/v-links/$image_path;
> >
> > так заработало.
> >
> > Просто для общего развития, не могли бы пояснить, что было не так?
>
> alias + try_files = проблемы
> http://trac.nginx.org/nginx/ticket/97
>
> Судя по логу - видимо строка "Ходящие " была заменена на значение
> alias, как соответствующая совпадению URI location /images/ (note:
> и там и там - 8 байт).  С учётом того, что try_files проверял
> другой путь, - это явно баг, видимо тесно связанный с последним
> из приведённых case'ов по ссылке выше.
>
> --
> Maxim Dounin
> http://nginx.org/en/donation.html
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Странное поведение try_files

2013-03-13 Пенетрантность Vadim Lazovskiy
Нет,
2013/03/13 13:04:15 [debug] 21424#0: *19130 trying to use file: "Ходячие
Мертвецы (The Walking Dead)/Ходячие Мертвецы (The Walking Dead).jpg"
"/disks/links/v-links/Ходячие Мертвецы (The Walking Dead)/Ходячие Мертвецы
(The Walking Dead).jpg"

Путь корректный. Папка и файл. И файл по данному пути есть.


13 марта 2013 г., 13:43 пользователь Андрей Василишин
написал:

> 13.03.2013 11:38, Vadim Lazovskiy пишет:
>
>  - try_files $image_path =404;
>> + alias /disks/links/v-links/$image_**path;
>>
>> так заработало.
>>
>> Просто для общего развития, не могли бы пояснить, что было не так?
>>
>
>
>
> А самому по дебаг логу не понятно?
> В случае try_files 2 раза вставляется $image_path
>
> __**_
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/**mailman/listinfo/nginx-ru<http://mailman.nginx.org/mailman/listinfo/nginx-ru>




-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx check file existense with regexps.

2013-02-21 Пенетрантность Vadim Lazovskiy
Прошу прощения, не правильно понял задачу.

map $arg_xml $xml_path {
"~(?\d{2})$" $path;
}

...

location = /xml/index.html {
root /opt/xml/files;
try_files /$xml_path/$arg_xml/$arg_xml.xml /notfound.xml;
}



21 февраля 2013 г., 21:01 пользователь -=Devil_InSide=- <
devil_ins...@mail.ru> написал:

> ,-[Валентин Бартенев, 21 February 2013 14:18]:
>
> > On Thursday 21 February 2013 02:07:06 -=Devil_InSide=- wrote:
> >> добрый день.
> >>
> >> возникла проблема при переезде с одной технологии раздачи файлов на
> >> nginx. файлы исторически лежат в дереве вида
> >>
> >> http://domain.com/xml/files//10258063/10258063.xml
> 8<--
> >> я чтото делаю не так, или же nginx не умеет проверять файлы , используя
> >> регулярные выражения?
> >>
> >
> > Да. Вы пытаетесь написать регулярное выражение там, где принимается
> > простая строка и предполагаете, что nginx будет с радостью сканировать на
> > каждый запрос всю ветвь файловой системы, а затем бегать по ним с
> > регулярным выражением.
> >
> > Если эта директория произвольна и никак не отображается на запрос, то
> > какой в ней смысл? Команда mv должна помочь решить эту проблему.
> >
>
> выяснил схему переделывания - все оказалось не так плохо,
> файлы выстраивались
> /opt/xml/files/56/123456/123456.xml
> то есть для пред-директории юзались последние две цифры версии-имени.
>
> обошелся приблизительно так в двух случаях:
>
> rewrite "^/xml/files/(\d+(\d{2}))\.xml$" /xml/files/$2/$1/$1.xml;
> и
> if ( $arg_file ~ "[0-9]+(?P[0-9][0-9])"){
> rewrite ^ /xml/files/$a/$arg_file/$arg_file.xml? permanent;
> }
>
> __
> mpd status: [playing]
> ZZ Top - El Diablo
> **
> *  jabber:  devil_ins...@jabber.ru   *
> *   Registered linux user #450844*
> **
>
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx check file existense with regexps.

2013-02-21 Пенетрантность Vadim Lazovskiy
- location ~ ^/xml/files/(?\d+)/\d+(?\d{2}).xml$ {
+ location ~ "^/xml/files/(?\d+)/\d+(?\d{2}).xml$" {


21 февраля 2013 г., 22:08 пользователь Vadim Lazovskiy <
vadim.lazovs...@gmail.com> написал:

> Здравствуйте.
>
> Правильней, было б как-то так:
>
>
> location ~ ^/xml/files/(?\d+)/\d+(?\d{2}).xml$ {
>  alias /opt/xml/files/$doc_path/$doc.xml;
> }
>
>
> 21 февраля 2013 г., 21:01 пользователь -=Devil_InSide=- <
> devil_ins...@mail.ru> написал:
>
> ,-[Валентин Бартенев, 21 February 2013 14:18]:
>>
>> > On Thursday 21 February 2013 02:07:06 -=Devil_InSide=- wrote:
>> >> добрый день.
>> >>
>> >> возникла проблема при переезде с одной технологии раздачи файлов на
>> >> nginx. файлы исторически лежат в дереве вида
>> >>
>> >> http://domain.com/xml/files//10258063/10258063.xml
>> 8<--
>> >> я чтото делаю не так, или же nginx не умеет проверять файлы , используя
>> >> регулярные выражения?
>> >>
>> >
>> > Да. Вы пытаетесь написать регулярное выражение там, где принимается
>> > простая строка и предполагаете, что nginx будет с радостью сканировать
>> на
>> > каждый запрос всю ветвь файловой системы, а затем бегать по ним с
>> > регулярным выражением.
>> >
>> > Если эта директория произвольна и никак не отображается на запрос, то
>> > какой в ней смысл? Команда mv должна помочь решить эту проблему.
>> >
>>
>> выяснил схему переделывания - все оказалось не так плохо,
>> файлы выстраивались
>> /opt/xml/files/56/123456/123456.xml
>> то есть для пред-директории юзались последние две цифры версии-имени.
>>
>> обошелся приблизительно так в двух случаях:
>>
>> rewrite "^/xml/files/(\d+(\d{2}))\.xml$" /xml/files/$2/$1/$1.xml;
>> и
>> if ( $arg_file ~ "[0-9]+(?P[0-9][0-9])"){
>> rewrite ^ /xml/files/$a/$arg_file/$arg_file.xml? permanent;
>> }
>>
>> __
>> mpd status:     [playing]
>> ZZ Top - El Diablo
>> **
>> *  jabber:  devil_ins...@jabber.ru   *
>> *   Registered linux user #450844*
>> **
>>
>>
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
>
> --
> Best Regards,
> Vadim Lazovskiy
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: nginx check file existense with regexps.

2013-02-21 Пенетрантность Vadim Lazovskiy
Здравствуйте.

Правильней, было б как-то так:


location ~ ^/xml/files/(?\d+)/\d+(?\d{2}).xml$ {
 alias /opt/xml/files/$doc_path/$doc.xml;
}


21 февраля 2013 г., 21:01 пользователь -=Devil_InSide=- <
devil_ins...@mail.ru> написал:

> ,-[Валентин Бартенев, 21 February 2013 14:18]:
>
> > On Thursday 21 February 2013 02:07:06 -=Devil_InSide=- wrote:
> >> добрый день.
> >>
> >> возникла проблема при переезде с одной технологии раздачи файлов на
> >> nginx. файлы исторически лежат в дереве вида
> >>
> >> http://domain.com/xml/files//10258063/10258063.xml
> 8<--
> >> я чтото делаю не так, или же nginx не умеет проверять файлы , используя
> >> регулярные выражения?
> >>
> >
> > Да. Вы пытаетесь написать регулярное выражение там, где принимается
> > простая строка и предполагаете, что nginx будет с радостью сканировать на
> > каждый запрос всю ветвь файловой системы, а затем бегать по ним с
> > регулярным выражением.
> >
> > Если эта директория произвольна и никак не отображается на запрос, то
> > какой в ней смысл? Команда mv должна помочь решить эту проблему.
> >
>
> выяснил схему переделывания - все оказалось не так плохо,
> файлы выстраивались
> /opt/xml/files/56/123456/123456.xml
> то есть для пред-директории юзались последние две цифры версии-имени.
>
> обошелся приблизительно так в двух случаях:
>
> rewrite "^/xml/files/(\d+(\d{2}))\.xml$" /xml/files/$2/$1/$1.xml;
> и
> if ( $arg_file ~ "[0-9]+(?P[0-9][0-9])"){
> rewrite ^ /xml/files/$a/$arg_file/$arg_file.xml? permanent;
> }
>
> __
> mpd status: [playing]
> ZZ Top - El Diablo
> **
> *  jabber:  devil_ins...@jabber.ru   *
> *   Registered linux user #450844*
> **
>
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best Regards,
Vadim Lazovskiy
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru