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

Приложение Symfony2 в подкаталоге конфигурации nginx

Я пытаюсь настроить среду так, чтобы surveyadmin.local указывает на один каталог и surveyadmin.local/api указывает на другого.

Однако, что бы я ни менял, /api URL всегда приводит к вызову каталога, который surveyadmin.local указывает на. Вот пример ошибки из журнала ошибок, указанного в конфигурации vhost:

2013/08/09 17:20:07 [error] 8911#0: *1 open() "/srv/http/surveytool/admin/build/app.php" failed (2: No such file or directory), client: 10.0.2.2, server: surveyadmin.local, request: "GET /api/organizations HTTP/1.1", host: "surveyadmin.local"

Обратите внимание, что ошибка относится к пути /srv/http/surveytool/admin/buid/, вместо /srv/http/surveytool/api/SurveyTool/web/ это ожидалось.

Вот моя конфигурация для рассматриваемого виртуального хоста:

server {
    listen 80;
    server_name surveyadmin.local;

    location / {
        root /srv/http/surveytool/admin/build;
        index index.html;
    }

    location /api {
        root /srv/http/surveytool/api/SurveyTool/web;
        index app.php;
        try_files $uri $uri/ /app.php?$query_String;
        location ~ \.php(?|$) {
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index app.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
        }
    }
    access_log  /var/log/nginx/surveyadmin.access.log;
    error_log   /var/log/nginx/surveyadmin.error.log debug;
}

Я пробовал изменить слово "корень" на "псевдоним" под location /api блок. Я попытался настроить второй виртуальный хост и выполнить прокси-сервер (с proxy_pass) к этому vhost.

Кажется, это не должно быть так сложно, поэтому я предполагаю, что моя ошибка проста, и я просто еще не видел ее.

Может ли кто-нибудь заметить очевидные проблемы с приведенной выше конфигурацией?

Не использовать root внутри location блоки. Это один из наиболее распространенные неправильные конфигурации nginx.

Вместо этого поместите root в server блокировать и использовать alias внутри location блоки, которым требуются определенные каталоги вне обычного корня документа.