Назад | Перейти на главную страницу

Перезапись URL-адреса Nginx перестает проходить через код местоположения

Я пытаюсь настроить свой проект Phalcon (php framework) на Nginx. К сожалению, мне не удается заставить перезапись работать. Чтобы лучше понять мою проблему, просмотрите файл конфигурации:

server {
listen   80; ## listen for ipv4; this line is default and implied
listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

index index.html index.htm index.php;
server_name 149.21.165.142;

root '/usr/share/nginx/www';

#custom settings for phalcon project:
location ^~ /phalcon{
    alias '/usr/share/nginx/phalcon/public';

    # if file exists return it right away
    if (-f $request_filename) {
        break;
    }

    # otherwise rewrite it
    if (!-e $request_filename) {
        rewrite ^(.+)$ /index.php?_url=$1 last;
    }

    location ~ (.*\.php)(/.*)?$ {
        return 403 "Finally works.";
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/phalcon/public$fastcgi_script_name;
        include fastcgi_params;
    }
}

#default project
location ~ (.*\.php)(/.*)?$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include fastcgi_params;
}

location ~ /\.ht {
    deny all;
}
}

http://149.21.165.142/phalcon/ отлично работает, но после добавления любого контроллера или действия, например, в url: http://149.21.165.142/phalcon/a заканчивается No input file specified..

После попадания в: rewrite ^(.+)$ /index.php?_url=$1 last; парсер перестает проходить /phalcon код места и переходит к месту под #default project комментарий. Затем, как вы можете догадаться, он не находит файла index.php в основном корневом пути, и сервер возвращает No input file specified ошибка.

Почему перезапись перестает проходить через локацию фалкона? Как я могу это исправить?

Надеюсь, что достаточно хорошо описал проблему. Ни английский, ни Nginx не являются моими сильными сторонами.