rewrite rules. help pls.

Роман Москвитин nefer05 at gmail.com
Tue Jun 11 07:26:55 UTC 2013


В документации же все описано. И ошибка вполне хорошо показывает где
проблема. Вместо рута тут надо алиас указать.


2013/6/11 Andrey Ermishin <eas at etherway.ru>

> Здравствуйте, Maxim.
>
> Вы писали 10 июня 2013 г., 14:13:55:
>
> MD> Hello!
>
> MD> On Mon, Jun 10, 2013 at 12:23:13PM +0400, Andrey Ermishin wrote:
>
> >> Уважаемые all.
> >>
> >> Пытаюсь мигрировать в apache на Nginx.
> >>
> >> nginx установлен вместе с php5-fpm.
> >>
> >> Возникла проблема с переносом правил для rewrite.
> >>
> >> На апаче правила выглядят так:
> >>
> >> RewriteEngine On
> >> RewriteCond %{REQUEST_URI} /playlist\.xspf
> >> RewriteRule (.*) channels.php [L,QSA]
> >>
> >> на nginx пробую такую конструкцию:
> >>
> >> server {
> >>     ...
> >>     location /eltex {
> >>         rewrite /playlist\.xspf /eltex/channels.php break;
> >>     }
> >>     ...
> >>     location ~ \.(php)$ {
> >>         ...
> >>         fastcgi_pass   php_backends;
> >>         ...
> >>     }
> >>     ...
> >> }
> >>
> >>
> >> Собственно  говоря в этом случае channels.php не выполняется, а просто
> >> отдается содержимое скрипта.
>
> MD> Во-первых, rewrite у вас не имеет шанса сработать, т.к. запрос
> MD> "/playlist.xspf" не имеет шансов попасть в location /eltex.
>
> MD> Во-вторых, даже если бы он сработал - запрос после "rewrite ...
> MD> break" обрабатывается в том же location, где был сделан rewrite.
> MD> А там у вас, судя по всему, никакого fastcgi_pass нет.  Если нужно
> MD> выбрать другой location - правильнее всего написать "rewrite ..
> MD> last".
>
> MD> Подробная документация есть тут:
>
> MD> http://nginx.org/r/location/ru
> MD> http://nginx.org/r/rewrite/ru
>
> >> Если же в backend добавляю     location ~ \.(php|xspf)$
> >> то вообще error ~404
>
> MD> Что опять же ожидаемо, ибо файла /playlist.xspf у вас, судя по
> MD> всему, нет.
>
> >> Что делать? как правильно составить конфигурацию для nginx?
>
> MD> Совсем правильно как-то так:
>
> MD>     location = /playlist.xspf {
> MD>         fastcgi_pass php_backends;
> MD>         fastcgi_param SCRIPT_FILENAME
> MD> $document_root/eltex/channels.php;
> MD>         include fastcgi_params;
> MD>     }
>
>
>
> Спасибо разобрался.
> Теперь новая засада (что бы не плодить топики).
>
> В апаче была такая конфигурация сервера:
>
> Alias /dns /srv/http/dns/html
>
> <Directory /srv/http/dns/html>
>         Options All
>         DirectoryIndex index.php
>
> </Directory>
>
> Переношу ее в nginx
>
> location ^~ /dns/ {
>         root /srv/http/dns/html/;
>         access_log       /srv/http/dns/logs/access.log;
>         error_log       /srv/http/dns/logs/error.log;
> }
>
> в итоге при обращении http://url/dns/
> получаю ошибку в еррор лог:
> 2013/06/11 10:46:23 [error] 11962#0: *5 open()
> "/srv/http/dns/html/dns/index.php" failed (2: No such file or directory)
>
> что не так?
>
>
>
>
>
> --
> Ермишин Андрей
> Руководитель департамента
> управления сети
> Оператор связи
> ООО "Шупашкартранс-К"
> телефон: (8352) 272008
>
> eas at etherway.ru
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20130611/c3b0c493/attachment-0001.html>


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