我有一个 codeigniter 应用程序,具有以下目录结构
<HOME>
|_ <web>
| |_<API>
| |_index.php
|_<admin>
开发人员在 、 和 目录中有一个 index.html。开发人员推出的 codeigniter 文件和服务位于 目录中。开发人员通过将服务名称附加到域来访问服务,如下所示http://mydomain/web/API/index.php/v1/GetRoles主机名在 javascript 文件中配置为 BASE PATH 变量。
该应用程序由运行 fast-cgi 的 NGINX 提供服务。
尽管 HTML 页面已加载,但未获取任何数据。因此,我们尝试通过在浏览器中输入 URL 来访问这些功能 (http://mydomain/web/API/index.php/v1/GetRoles)。我们收到 404 Not Found 错误。错误日志包含以下条目
2016/05/20 16:14:57 [error] 2127#0: *232 FastCGI sent in stderr: "Unable to open primary script: /home/myname/public_html/domainname/public/projectname/index.php (No such file or directory)" while reading response header from upstream, client: 14.141.163.46, server: mydomain.com, request: "GET /web/API/v1/get/Common/GetActivities HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "mydomain.com"
服务器应该在 /home/myname/public_html/domainname/public/projectname/web/API/index.php 中寻找 index.php,而不是在 WEB ROOT 中寻找它。
我的NGINX配置如下
server {
listen mydomain.com;
server_name mydomain.com;
root /home/myname/public_html/domainname/public/projectname;
keepalive_timeout 70;
access_log /home/myname/public_html/domainname/log/access.log;
error_log /home/myname/public_html/domainname/log/error.log;
gzip_static on;
index index.html index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
# pass the PHP scripts to FastCGI server listening on the php-fpm socket
location ~ \.php$ {
#try_files $uri =404;
#fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_intercept_errors on;
}
}
我无法弄清楚为什么 NGINX 在 WEB ROOT 中寻找 index.php,而不是加载我们在 URL 中输入的内容。期待听到任何遇到过类似问题的人的意见。
答案1
据我从您的请求中看到的那样,您尝试获取/web/API/v1/get/Common/GetActivities
,但这不是真正的文件夹。您可以/web/API/v1/get/Common/GetActivities
使用 root执行定位/home/myname/public_html/domainname/public/projectname/web/API
,或者更改您的请求路径/web/API/index.php