Re: [Sysadmins] Помогите с nginx rewrite
26 января 2011 г. 12:11 пользователь Yuriy Kashirin y...@emict.com написал: А вы чем ргулярные выражения отлаживаете? $ pcretest PCRE version 7.9 2009-04-11 Я отлаживал обычным перлом... А за утилитку спасибо, будем знать )) -- С уважением, Хачатурян Юрий (y...@yukh.ru) ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
On Wed, Jan 26, 2011 at 11:11:30AM +0200, Yuriy Kashirin wrote: Кстати, пользуясь случаем, спрошу. pcretest для таких случаев весьма полезная утилита. Зачем она в девел пакете лежит (libpcre-devel)? Повесишь или мне? :) -- WBR, Michael Shigorin m...@altlinux.ru -- Linux.Kiev http://www.linux.kiev.ua/ ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
26.01.2011 11:26, Yuri Khachaturyan пишет: А вы чем ргулярные выражения отлаживаете? $ pcretest PCRE version 7.9 2009-04-11 Я отлаживал обычным перлом... А за утилитку спасибо, будем знать )) Да, спасибо. А я мучился всегда... -- WBR, Dubrovskiy Vyacheslav smime.p7s Description: S/MIME Cryptographic Signature ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
26.01.2011 17:48, Slava Dubrovskiy пишет: 26.01.2011 11:26, Yuri Khachaturyan пишет: А вы чем ргулярные выражения отлаживаете? $ pcretest PCRE version 7.9 2009-04-11 Я отлаживал обычным перлом... А за утилитку спасибо, будем знать )) Да, спасибо. А я мучился всегда... Если не секрет, в каком пакете это чудо утилита.. А то я то же мучаюсь.. ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
On Среда 26 января 2011, Michael Shigorin wrote: On Wed, Jan 26, 2011 at 11:11:30AM +0200, Yuriy Kashirin wrote: Кстати, пользуясь случаем, спрошу. pcretest для таких случаев весьма полезная утилита. Зачем она в девел пакете лежит (libpcre-devel)? Повесишь или мне? :) https://bugzilla.altlinux.org/show_bug.cgi?id=24980 -- Best regards Yuriy Kashirin ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
[Sysadmins] Помогите с nginx rewrite
Добрый день! Помогите пожалуйста с rewrite в nginx, никак не могу заставить работать правило (переделываю из apache). Вариант для apache: RewriteEngine on RewriteRule ^media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ media/$1/$2/$4.$5?$3 [QSA] Попытка для nginx: location /media { rewrite ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ /media/$1/$2/$4.$5?$3 break; } Выдает ошибку: Checking configuration sanity for nginx: [emerg]: directive rewrite is not terminated by ; in /etc/nginx/sites-enabled.d/test.conf:9 configuration file /etc/nginx/nginx.conf test failed Смысл: надо из /media/video/air_subjects/2010-01/01/t/123123/82.flv получить /media/video/air_subjects/2010-01/01/82.flv?123123 -- С уважением, Хачатурян Юрий (y...@yukh.ru) ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
On Tue, Jan 25, 2011 at 04:20:28PM +0300, Yuri Khachaturyan wrote: YK location /media { YKrewrite ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ YK /media/$1/$2/$4.$5?$3 break; YK } Цитата из документации: Если в регулярном выражении встречаются символы } или ;, то всё выражение нужно заключить в одинарные или двойные кавычки. -- С уважением, Денис http://mithraen.ru/ signature.asc Description: Digital signature ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
Спасибо, вроде сработало! 25 января 2011 г. 16:27 пользователь Денис Смирнов mithr...@freesource.info написал: Цитата из документации: Если в регулярном выражении встречаются символы } или ;, то всё выражение нужно заключить в одинарные или двойные кавычки. -- С уважением, Хачатурян Юрий (y...@yukh.ru) ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
25.01.2011 15:20, Yuri Khachaturyan пишет: Добрый день! Помогите пожалуйста с rewrite в nginx, никак не могу заставить работать правило (переделываю из apache). Вариант для apache: RewriteEngine on RewriteRule ^media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ media/$1/$2/$4.$5?$3 [QSA] Попытка для nginx: location /media { rewrite ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ /media/$1/$2/$4.$5?$3 break; rewrite ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ /media/$1/$2/$4.$5?$3 ; break; } Выдает ошибку: Checking configuration sanity for nginx: [emerg]: directive rewrite is not terminated by ; in /etc/nginx/sites-enabled.d/test.conf:9 configuration file /etc/nginx/nginx.conf test failed Смысл: надо из /media/video/air_subjects/2010-01/01/t/123123/82.flv получить /media/video/air_subjects/2010-01/01/82.flv?123123 -- WBR, Dubrovskiy Vyacheslav smime.p7s Description: S/MIME Cryptographic Signature ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
25 января 2011 г. 16:32 пользователь Slava Dubrovskiy sl...@tangramltd.com написал: rewrite ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ /media/$1/$2/$4.$5?$3 ; break; Тоже ошибка. Вариант от Дениса исправил ошибку, но rewrite все равно не срабатывает. -- С уважением, Хачатурян Юрий (y...@yukh.ru) ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
25 января 2011 г. 18:52 пользователь Денис Смирнов mithr...@freesource.info написал: On Tue, Jan 25, 2011 at 04:39:39PM +0300, Yuri Khachaturyan wrote: YK Тоже ошибка. Вариант от Дениса исправил ошибку, но rewrite все равно YK не срабатывает. попробуйте в своем варианте заменить break на last Пробовал уже все, что только возможно. Перловый скрипт с таким же регекспом отрабатывает, внутри nginx - нет. Очень похоже, что проблема в самом nginx или libpcre. Пробовал пересобрать последние версии stable и devel - результат тот же: 2011/01/25 18:52:38 [notice] 30896#0: *21 ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ /media/$1/$2/$4.$5?$3 does not match /media/video/air_subjects/2010-01/04/t/234234/12392.flv, client: 213.243.84.2, server: , request: GET /media/video/air_subjects/2010-01/04/t/234234/12392.flv HTTP/1.1 -- С уважением, Хачатурян Юрий (y...@yukh.ru) ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
On Вторник 25 января 2011, Yuri Khachaturyan wrote: 25 января 2011 г. 18:52 пользователь Денис Смирнов mithr...@freesource.info написал: On Tue, Jan 25, 2011 at 04:39:39PM +0300, Yuri Khachaturyan wrote: YK Тоже ошибка. Вариант от Дениса исправил ошибку, но rewrite все равно YK не срабатывает. Пробовал уже все, что только возможно. Перловый скрипт с таким же регекспом отрабатывает, внутри nginx - нет. Очень похоже, что проблема в самом nginx или libpcre. Пробовал пересобрать последние версии stable и devel - результат тот же: 2011/01/25 18:52:38 [notice] 30896#0: *21 ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ /media/$1/$2/$4.$5?$3 does not match /media/video/air_subjects/2010-01/04/t/234234/12392.flv, А вы что в кавычки заключили? Все правило? Или все таки только регексп? -- Best regards Yuriy Kashirin ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
25 января 2011 г. 19:13 пользователь Yuriy Kashirin y...@emict.com написал: 2011/01/25 18:52:38 [notice] 30896#0: *21 ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ /media/$1/$2/$4.$5?$3 does not match /media/video/air_subjects/2010-01/04/t/234234/12392.flv, А вы что в кавычки заключили? Все правило? Или все таки только регексп? Только регексп, есстественно. При всем при этом, этот же регексп в apache2 отлично работает, а также перловый скрипт: #!/usr/bin/perl use strict; my $a = /media/video/air_subjects/2010-01/04/t/234234/12392.flv; print $a\n; $a =~ s|/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$|/media/$1/$2/$4.$5?$3|; print $a; тоже все отрабатывает как надо. nginx в режиме debug же пишет does not match. -- С уважением, Хачатурян Юрий (y...@yukh.ru) ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
On Tue, Jan 25, 2011 at 06:56:25PM +0300, Yuri Khachaturyan wrote: YK Пробовал уже все, что только возможно. YK Перловый скрипт с таким же регекспом отрабатывает, внутри nginx - нет. YK Очень похоже, что проблема в самом nginx или libpcre. Пробовал YK пересобрать последние версии stable и devel - результат тот же: YK ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ YK /media/$1/$2/$4.$5?$3 does not match YK /media/video/air_subjects/2010-01/04/t/234234/12392.flv, client: Гм. На глаз они подходят, разве что если / не попадает под . (что редкостный бред, но можно проверить). Ну и когда я отлаживаю регекспы, то я сначала пишу что-то простое (фактически точное совпадение с той строкой которая сранивается), а уже потом начинаю ее править и превуращать в regexp. YK 213.243.84.2, server: , request: GET YK /media/video/air_subjects/2010-01/04/t/234234/12392.flv HTTP/1.1 YK YK YK -- YK С уважением, YK Хачатурян Юрий (y...@yukh.ru) YK ___ YK Sysadmins mailing list YK Sysadmins@lists.altlinux.org YK https://lists.altlinux.org/mailman/listinfo/sysadmins -- С уважением, Денис http://mithraen.ru/ signature.asc Description: Digital signature ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
On Tue, Jan 25, 2011 at 06:56:25PM +0300, Yuri Khachaturyan wrote: YK Пробовал уже все, что только возможно. YK Перловый скрипт с таким же регекспом отрабатывает, внутри nginx - нет. YK Очень похоже, что проблема в самом nginx или libpcre. Пробовал YK пересобрать последние версии stable и devel - результат тот же: О, в соседнем письме правильный ответ на задачку :) На будущее -- лучше при отладки таких вещей хотя бы аттачить конфиг к письму. -- С уважением, Денис http://mithraen.ru/ signature.asc Description: Digital signature ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
25 января 2011 г. 19:38 пользователь Денис Смирнов mithr...@freesource.info написал: Гм. На глаз они подходят, разве что если / не попадает под . (что редкостный бред, но можно проверить). Ну и когда я отлаживаю регекспы, то я сначала пишу что-то простое (фактически точное совпадение с той строкой которая сранивается), а уже потом начинаю ее править и превуращать в regexp. Повторюсь, в apache оно работает, и perl скрипт с этим же regex отрабатывает как нужно... Тут какая то проблема в nginx похоже... -- С уважением, Хачатурян Юрий (y...@yukh.ru) ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
25 января 2011 г. 19:40 пользователь Денис Смирнов mithr...@freesource.info написал: О, в соседнем письме правильный ответ на задачку :) На будущее -- лучше при отладки таких вещей хотя бы аттачить конфиг к письму. Конфиг чего? Всего nginx или достаточно только секции server? server { listen 194.67.52.114:80; server_name test.poisk.vid.ru; error_log /var/log/nginx/error.log debug ; location / { root /home/wm/www; index index.php; rewrite ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ /media/$1/$2/$4.$5?$3 break; } location ~ \.php$ { fastcgi_passunix:/var/run/php5-fpm/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/wm/www$fastcgi_script_name; include fastcgi_params; } } -- С уважением, Хачатурян Юрий (y...@yukh.ru) ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
On Tue, Jan 25, 2011 at 07:43:21PM +0300, Yuri Khachaturyan wrote: 25 января 2011 г. 19:40 пользователь Денис Смирнов mithr...@freesource.info написал: О, в соседнем письме правильный ответ на задачку :) На будущее -- лучше при отладки таких вещей хотя бы аттачить конфиг к письму. Конфиг чего? Всего nginx или достаточно только секции server? rewrite ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ /media/$1/$2/$4.$5?$3 break; какая прелесть. rewrite ... ... break а я б вообще переписал как rewrite ^(/media/.*/t/)(\d+)/(\d+\.\w{3})$ /$1/$3?$2 break; -- С уважением Афанасов Дмитрий signature.asc Description: Digital signature ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
25 января 2011 г. 21:17 пользователь Afanasov Dmitry en...@altlinux.org написал: Конфиг чего? Всего nginx или достаточно только секции server? rewrite ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ /media/$1/$2/$4.$5?$3 break; какая прелесть. rewrite ... ... break а я б вообще переписал как rewrite ^(/media/.*/t/)(\d+)/(\d+\.\w{3})$ /$1/$3?$2 break; Не помогло: 2011/01/25 21:18:17 [notice] 3107#0: *35 ^(/media/.*/t/)(\d+)/(\d+\.\w{3})$ /$1/$3?$2 does not match /media/video/air_subjects/2010-01/04/t/234234/12392.flv, client: 213.243.84.2, server: test.poisk.vid.ru, request: GET /media/video/air_subjects/2010-01/04/t/234234/12392.flv HTTP/1.1, host: test.poisk.vid.ru 2011/01/25 21:18:17 [error] 3107#0: *35 open() /home/wm/www/media/video/air_subjects/2010-01/04/t/234234/12392.flv failed (2: No such file or directory), client: 213.243.84.2, server: test.poisk.vid.ru, request: GET /media/video/air_subjects/2010-01/04/t/234234/12392.flv HTTP/1.1, host: test.poisk.vid.ru Файл реально лежит в /media/video/air_subjects/2010-01/04/12392.flv, с помощью данного rewrite нужно преобразовать путь, который запрашивается в этот и передать параметр через ?, который идет сразу после /t/ ... -- С уважением, Хачатурян Юрий (y...@yukh.ru) ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
On Tue, Jan 25, 2011 at 09:21:15PM +0300, Yuri Khachaturyan wrote: 25 января 2011 г. 21:17 пользователь Afanasov Dmitry en...@altlinux.org написал: Конфиг чего? Всего nginx или достаточно только секции server? rewrite ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ /media/$1/$2/$4.$5?$3 break; какая прелесть. rewrite ... ... break а я б вообще переписал как rewrite ^(/media/.*/t/)(\d+)/(\d+\.\w{3})$ /$1/$3?$2 break; Не помогло: брр, сам сказал про прелесть и сам же повторил. смотрите за кавычками: rewrite ^(/media/.*/t/)(\d+)/(\d+\.\w{3})$ $1$3?$2; специально проверил: *1 ^(/media/.*/t/)(\d+)/(\d+\.\w{3})$ matches /media/video/air_subjects/2010-01/01/t/123123/82.flv *1 rewritten data: /media/video/air_subjects/2010-01/01/t//82.flv, args: 123123 -- С уважением Афанасов Дмитрий signature.asc Description: Digital signature ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
On Tue, Jan 25, 2011 at 09:43:30PM +0300, Yuri Khachaturyan wrote: 25 января 2011 г. 21:39 пользователь Afanasov Dmitry en...@altlinux.org написал: брр, сам сказал про прелесть и сам же повторил. смотрите за кавычками: rewrite ^(/media/.*/t/)(\d+)/(\d+\.\w{3})$ $1$3?$2; специально проверил: *1 ^(/media/.*/t/)(\d+)/(\d+\.\w{3})$ matches /media/video/air_subjects/2010-01/01/t/123123/82.flv *1 rewritten data: /media/video/air_subjects/2010-01/01/t//82.flv, args: 123123 Вот это уже ближе к делу, только в результате мы получили /media/video/air_subjects/2010-01/04/t/12392.flv, args: 234234, а надо без /t/ ну уж дальше, я полагаю, вы закончите. основная ошибка была - в кавычках. сначала в их отсуствии, затем в неверном расположении. -- С уважением Афанасов Дмитрий signature.asc Description: Digital signature ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
25 января 2011 г. 21:39 пользователь Afanasov Dmitry en...@altlinux.org написал: специально проверил: *1 ^(/media/.*/t/)(\d+)/(\d+\.\w{3})$ matches /media/video/air_subjects/2010-01/01/t/123123/82.flv *1 rewritten data: /media/video/air_subjects/2010-01/01/t//82.flv, args: 123123 Похоже, проблема была действительно в кавычках. Сработала вот такая конструкция: rewrite ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ /media/$1/$2/$4.$5?$3 last; Дмитрий и остальные, кто принял участие, огромное Вам спасибо за помощь! -- С уважением, Хачатурян Юрий (y...@yukh.ru) ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
25 января 2011 г. 21:47 пользователь Afanasov Dmitry en...@altlinux.org написал: в результате мы получили /media/video/air_subjects/2010-01/04/t/12392.flv, args: 234234, а надо без /t/ ну уж дальше, я полагаю, вы закончите. основная ошибка была - в кавычках. сначала в их отсуствии, затем в неверном расположении. Да, уже все сделал. Спасибо огромное! -- С уважением, Хачатурян Юрий (y...@yukh.ru) ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
On Tue, Jan 25, 2011 at 07:43:21PM +0300, Yuri Khachaturyan wrote: YK Конфиг чего? Всего nginx или достаточно только секции server? YK rewrite ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ YK /media/$1/$2/$4.$5?$3 break; Достаточно этой строчки, в которой бред :) Потому что вместо регекса ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ с заменой на /media/$1/$2/$4.$5?$3 я вижу регексп ^/media/(.*)/(.*)/t/([0-9]+)/(.*)\.([a-z0-9]{3})$ /media/$1/$2/$4.$5?$3 с заменой на break; В кавычках должен быть регексп, а не regexp вместе с тем на что заменяем. -- С уважением, Денис http://mithraen.ru/ signature.asc Description: Digital signature ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins
Re: [Sysadmins] Помогите с nginx rewrite
On Tue, Jan 25, 2011 at 07:30:08PM +0300, Yuri Khachaturyan wrote: А вы что в кавычки заключили? Все правило? Или все таки только регексп? YK Только регексп, есстественно. Собственно именно поэтому надо для отладки публиковать куски конфигов -- ибо глаз замыливается, и вот такие тривиальные ошибки становятся самыми сложными в отладке :) -- С уважением, Денис http://mithraen.ru/ signature.asc Description: Digital signature ___ Sysadmins mailing list Sysadmins@lists.altlinux.org https://lists.altlinux.org/mailman/listinfo/sysadmins