Re: решение ограничения в 10 перенаправлений c помощью пересборки nginx
> > 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
Здравствуйте. Можно вас попросить добавить сборку для SLES 15? Спасибо. -- WBR, Vadim Lazovskiy ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Listen ssl
Здравствуйте. Уберите из конфига 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
Большое спасибо! 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
Здравствуйте. Не могли бы вы приготовить пакеты для Ubuntu 17.10? Спасибо! -- WBR, Vadim Lazovskiy ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Размер исполняемого файла.
Здравствуйте. Заведите кастомный лог, используйте 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: Условие или
Здравствуйте. Можно сделать через 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
А вообще, не выделяейте из 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: Следование по редиректам вместо ответа браузеру.
Здравствуйте. Например, как-то так: 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
Здравствуйте. В ту же самую переменную (зачем?), наверное, можно так (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: Сначала отдать браузеру однопиксельный гиф, а потом подумать
Здравствуйте. Я за скрипт в режиме "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%
Здравствуйте. Похожее поведение было с версией 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
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
Здравствуйте. Возможно немного не по теме, но возможно кто-то сталкивался. Есть 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 больше единицы.
Это произошло опять: /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
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
Здравствуйте. 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 больше единицы.
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 больше единицы.
Добавил еще один диск, сделал 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-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 отъедает все процессорное время
Здравствуйте. В официальном репозитории доступна как сборка без --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 больше единицы.
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 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 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 больше единицы.
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 больше единицы.
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 больше единицы.
> > > Запрос №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 больше единицы.
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
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
> > > Проблема 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
Здравствуйте. Возникает проблема с отдачей данных из кэша при использовании связки 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: Общий кэш на нескольких дисках
Здравствуйте. Спасибо за наводку на 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
Общий кэш на нескольких дисках
Здравствуйте. Имеется, допустим, 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: Проксирование по заранее не заданным ссылкам
Здравствуйте. Модули не нужны. 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 и регистр
Здравствуйте. Насколько мне известно, 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
А еще у вас не видно: 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
Здравствуйте. 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
Здравствуйте. В 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: Журнал запросов для кешированных страниц
Здравствуйте. Можно попробовать сделать (не проверял): 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, почему так?
Здравствуйте. Версия 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
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
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
Речь идет как раз про официальные (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
Здравствуйте. А почему image_filter не включен в сборки для debian (подозреваю и для прочих)? Не очень удобно каждый раз при обновлении пересобирать пакет. Спасибо. -- WBR, Vadim Lazovskiy ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Re: Отрерайтить поддомены в страницы
Действительно, не работает. Наверное из-за 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: Отрерайтить поддомены в страницы
Здравствуйте. Директива 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
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
Нет, поторопился. Сломались другие 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
Максим, большое спасибо. С патчем все работает как надо. А какова вероятность, что этот патч попадет в 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
Здравствуйте. Нужно разложить скиншоты по папкам и с таймстампом в имени файла. Вот конфиг: 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: проверка конфигов из скрипта
Здравствуйте. 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
Здравствуйте. 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 бэкэндом
Здравствуйте. Запустите, например 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
Спасибо! 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" (еще раз)
Здравствуйте. это 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
Здравствуйте. В таргете 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
Здравствуйте. Пробовал ли кто обновлять 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 при проксировании
Здравствуйте. 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
Должно работать и без 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
Здравствуйте. 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
Здравствуйте. На данный момент 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
Здравствуйте. Директива 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-запрос в собственном модуле?
Здравствуйте. Для примера можно посмотреть как 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)
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)
Это единственный сервер для 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)
Здравствуйте. Емнип, 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 модуль и количество префиксов
Здравствуйте. У нас 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: Изменение процедуры обновления кэша
Здравствуйте. 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 на кэширование
Здравствуйте. Из википедии: "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: релоад конфига
А нет ли где в логах "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: релоад конфига
Здравствуйте. Попробуйте собрать без --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
Здравствуйте. Блок 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: ограничение скорости
Здравствуйте. Думаю, стоит взглянуть: 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
Здравствуйте. В 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: Поиск файлов в каталогах
Да, последний параметр для try_files - =404, например. ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: Поиск файлов в каталогах
Здравствуйте. Если список каталогов конечный, то можно забить их все в 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-е в почту
Здравствуйте. У вас 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-е в почту
Здравствуйте. Не проще ли сваливать все 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 через переменную не работает
Здравствуйте. Задайте 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 доступ к странице по времени
Не будет. 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 доступ к странице по времени
День недели с мапом - никак. На перле что-то примерно такое: 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 доступ к странице по времени
Здравствуйте. Начиная с версий 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
Попробовал: 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
Здравствуйте. Директива 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
Спасибо за разъяснения! 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 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.
Прошу прощения, не правильно понял задачу. 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.
- 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.
Здравствуйте. Правильней, было б как-то так: 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