Я пытаюсь настроить среду так, чтобы 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
блоки, которым требуются определенные каталоги вне обычного корня документа.