NGINX 访问错误路径的文件

NGINX 访问错误路径的文件

我有一个 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

相关内容