web-dev-qa-db-ja.com

nginxルートフォルダを確認する方法

非常に基本的な404エラーがあります:

説明:HTTP404。探しているリソース(またはその依存関係の1つ)が削除されたか、名前が変更されたか、一時的に使用できなくなった可能性があります。次の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
Giova

わかりました、私は最終的にそれを機能させました。私はまだ他の問題を抱えています、インデックスが機能しないので私は完全なアドレスを入力する必要があります:

http:// localhost:8045/Default.aspx

私がタイプするだけなら:

http:// localhost:8045 または http:// localhost:8045/default.aspx

次に、404エラーが発生します(URLでは大文字と小文字が区別されます)

今fastcgiが機能すると言ったように、物事はまだあいまいであり、私はそれを改善する必要があります。とにかく、私はあなたに私のすべての設定を与えます、私はこれが誰かを助けることを願っています:

OS:rapbian 3.18.11(debian)モノラル:4.0.2 fastcgi-server4 nginx 1.2.1

FastCGI

設定ファイル:

   <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;
     }

 }

Webコンテンツ:/ 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>

ログ

1
Giova

ルートディレクトリにアクセスすると「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ファイルをホストしています。

3
Evengard