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