我正在尝试设置我的环境,使其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;
}
我尝试将块下的单词“root”更改为“alias” location /api
。我尝试设置第二个虚拟主机,并使用 执行到该虚拟主机的代理转发proxy_pass
。
这似乎不应该那么困难,所以我假设我的错误是一个简单的错误,只是我还没有看到。
有人能发现上述配置有什么明显问题吗?
答案1
不要在块root
内使用location
。这是最常见的 nginx 配置错误。
相反,将放置root
在块中server
,并使用alias
location
在需要正常文档根目录之外的特定目录的块内。