Приложение 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/
это было ожидаемо.
Вот мой конфиг для рассматриваемого vhost:
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.
Кажется, что это не должно быть так сложно, поэтому я предполагаю, что моя ошибка - простая, которую я просто еще не видел.
Кто-нибудь может обнаружить какие-либо очевидные проблемы с вышеупомянутым конфигом?
1 ответ
Не использовать root
внутри location
блоки. Это одна из самых распространенных ошибок конфигурации nginx.
Вместо этого поместите root
в server
блокировать и использовать alias
внутри location
блоки, которые нуждаются в определенных каталогах за пределами обычного корня документа.