rewrite rules. help pls.

Andrey Ermishin eas at etherway.ru
Tue Jun 11 06:50:25 UTC 2013


Здравствуйте, 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