非常に基本的な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の基本を理解したら新しい質問を投稿します。とにかく私は最終的に機能する構成を与えます(以下のいくつかの答えを参照してください)
わかりました、私は最終的にそれを機能させました。私はまだ他の問題を抱えています、インデックスが機能しないので私は完全なアドレスを入力する必要があります:
私がタイプするだけなら:
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>
ログ
ルートディレクトリにアクセスすると「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ファイルをホストしています。