如何检查 nginx 根文件夹

如何检查 nginx 根文件夹

我遇到了一个非常基本的 404 错误:

描述:HTTP 404。您正在寻找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下 URL 并确保其拼写正确。

详细信息:请求的 URL:/index.html

我无法弄清楚最终调用了哪个完整的 url。

我的 index.html 非常简单:

<html><body>hello</body></html>

我的配置文件:

server {

 listen 8045;

        server_name localhost;
        root /usr/share/nginx/asproot;

        access_log /var/log/nginx/asp.access.log;

        error_log /var/log/nginx/asp.error.log;

location / {

        index index.html index.htm default.aspx Default.aspx;

        fastcgi_index Default.aspx;

        fastcgi_pass 127.0.0.1:9000;

        include /etc/nginx/fastcgi_params;

     }

 }

nginx 用户可以访问根文件夹并读取 index.html(我用 进行了测试su)。在浏览器中我加载:http://serverip:8045/index.html

那么到底出了什么问题?我怎样才能看到最终的 URL 是什么?


编辑

我发现问题出在 fastcgi 上。我读了几篇文章,但我还是迷茫了!

为了避免出现一个很长且历史悠久问题,我放弃了这个问题,等我理解了 nginx 的 fastcgi 基础知识后,我会发布一个新问题。无论如何,我给出了一个最终有效的配置(见下面的几个答案)

答案1

似乎当您访问根目录时,会应用“index”指令,但当您直接访问时,它会应用“fastcgi_pass”指令。您可能应该在 pass 指令之前检查文件是否存在。

好像我有和你类似的需求,我使用了这个配置:

server {
    listen      80;
    server_name localhost;

    # PublicRoot
    root /usr/share/nginx/asproot;

    # Logs
    access_log /var/log/nginx/asp.access.log main buffer=50k;
    error_log /var/log/nginx/asp.error.log;

    location / {
        try_files $uri @fastcgi;
    }

    # Fastcgi-pass
    location @fastcgi {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_keep_conn on;
        include /etc/nginx/fastcgi_params;
        fastcgi_intercept_errors on;
    }


}

这里我首先通过“try_files”指令检查是否可以获取静态文件,如果不能,则通过 fastcgi_pass 指令。但我将 aspx 文件托管在不同的文件夹中,与静态文件不同。

答案2

好的,我终于让它工作了。我还有一个问题,索引不起作用,所以我必须输入完整的地址:

http://本地主机:8045/Default.aspx

如果我只是输入:

http://本地主机:8045 或者 http://本地主机:8045/default.aspx

然后我得到了一个 404 错误(因此 url 区分大小写)

正如我所说,现在 fastcgi 可以工作了,但有些东西仍然不清楚,我必须改进它。无论如何,我给你我所有的配置,我希望这能对某些人有所帮助:

操作系统:rapbian 3.18.11 (debian) Mono:4.0.2 fastcgi-server4 nginx 1.2.1

快速CGI

配置文件:

   <apps>
<web-application>
        <name>ptitest</name>
        <vhost>*</vhost>
        <vport>8045</vport>
        <vpath>/</vpath>
        <path>/usr/share/nginx/asproot</path>
</web-application>
</apps>

命令行 :

CONFIG_PATH=/usr/share/nginx/fastcgimono
LOG=/var/log/fastcgi-mono4.log

MONOSERVER=$(which fastcgi-mono-server4)

${MONOSERVER} /appconfigdir=${CONFIG_PATH} /socket=tcp:127.0.0.1:9000 /logfile=${LOG} --verbose &

NGINX:

/etc/nginx/fastcgi_params

fastcgi_param   QUERY_STRING            $query_string;
fastcgi_param   REQUEST_METHOD          $request_method;
fastcgi_param   CONTENT_TYPE            $content_type;
fastcgi_param   CONTENT_LENGTH          $content_length;

fastcgi_param   SCRIPT_FILENAME         $request_filename;
fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
fastcgi_param   REQUEST_URI             $request_uri;
fastcgi_param   DOCUMENT_URI            $document_uri;
fastcgi_param   DOCUMENT_ROOT           $document_root;
fastcgi_param   SERVER_PROTOCOL         $server_protocol;

fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

fastcgi_param   REMOTE_ADDR             $remote_addr;
fastcgi_param   REMOTE_PORT             $remote_port;
fastcgi_param   SERVER_ADDR             $server_addr;
fastcgi_param   SERVER_PORT             $server_port;
fastcgi_param   SERVER_NAME             $server_name;

fastcgi_param   HTTPS                   $https;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param   REDIRECT_STATUS         200;
fastcgi_param PATH_INFO "";

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

site-avalaible/default(我尝试了很多次,现在的情况是这样的):

server {

 listen 8045;

        server_name ptitest;
        root /usr/share/nginx/asproot;

        access_log /var/log/nginx/asp.access.log;

        error_log /var/log/nginx/asp.error.log;

location ~ \.(aspx|asmx|ashx|asax|ascx|soap|rem|axd|cs|config|dll)$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
        fastcgi_intercept_errors on;

        }

location / {
        root html;
        index index.html index.htm default.aspx Default.aspx;
     }

 }

网页内容 : /usr/share/nginx/asproot/web.config:

<configuration>

 <system.web>

<customErrors mode="Off"/>

 </system.web>

</configuration>

/usr/share/nginx/asproot/Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <div>
    <% var test = String.Format("Hello World! Got an aspx page running on nginx!!!\r\n{0}",System.DateTime.Now); %>

    <%= test %>
    </div>
</body>
</html>

日志

相关内容