Mono通过nginx上的FastCGI

我正在通过http://www.mono-project.com/FastCGI_Nginx,并无法得到它的工作。 FastCGI服务器似乎正在运行。 以下是来自错误日志:

上游发送意外的FastCGIlogging:3从上游读取响应头,客户端:192.168.1.125,服务器:arch,请求:“GET /Default.aspx HTTP / 1.1”,上游:“fastcgi://127.0.0.1:9000” ,主持人:“拱门”

用于启动服务器的命令(我已经尝试了server2和server4,使用一个简单的.NET 2.0或.NET 4.0项目):

fastcgi-mono-server2 / applications = arch:/:/ var / www / test / public / /socket=tcp:127.0.0.1:9000 / stopable = True

nginxconfiguration:

server { listen 80; server_name arch; access_log /var/www/test/log/access.log; error_log /var/www/test/log/error.log; location / { root /var/www/test/public; index index.html index.htm default.aspx Default.aspx; fastcgi_index Default.aspx; fastcgi_pass 127.0.0.1:9000; fastcgi_param PATH_INFO ""; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } 

使用xsp4工作正常,我可以浏览网站。

我已经启用FastCGI日志logging,这是输出:

 [2012-04-15 23:51:18Z] Debug Accepting an incoming connection. [2012-04-15 23:51:18Z] Notice Beginning to receive records on connection. [2012-04-15 23:51:18Z] Debug Record received. (Type: BeginRequest, ID: 1, Length: 8) [2012-04-15 23:51:18Z] Debug Record received. (Type: Params, ID: 1, Length: 386) [2012-04-15 23:51:18Z] Debug Record received. (Type: Params, ID: 1, Length: 0) [2012-04-15 23:51:18Z] Debug Read parameter. (PATH_INFO = ) [2012-04-15 23:51:18Z] Debug Read parameter. (SCRIPT_FILENAME = /var/www/test/public/Home) [2012-04-15 23:51:18Z] Debug Read parameter. (HTTP_HOST = arch) [2012-04-15 23:51:18Z] Debug Read parameter. (HTTP_USER_AGENT = Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0) [2012-04-15 23:51:18Z] Debug Read parameter. (HTTP_ACCEPT = text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8) [2012-04-15 23:51:18Z] Debug Read parameter. (HTTP_ACCEPT_LANGUAGE = en-gb,en;q=0.5) [2012-04-15 23:51:18Z] Debug Read parameter. (HTTP_ACCEPT_ENCODING = gzip, deflate) [2012-04-15 23:51:18Z] Debug Read parameter. (HTTP_CONNECTION = keep-alive) [2012-04-15 23:51:18Z] Debug Read parameter. (HTTP_COOKIE = ASP.NET_SessionId=2C3D702C9B0F23F69B80820B) [2012-04-15 23:51:18Z] Error Failed to process connection. Reason: Argument cannot be null. Parameter name: s [2012-04-15 23:51:18Z] Debug Record sent. (Type: EndRequest, ID: 1, Length: 8) [2012-04-15 23:51:18Z] Debug The FastCGI connection has been closed. 

需要两个额外的FastCGI参数。

 fastcgi_param SERVER_PORT "80"; fastcgi_param SCRIPT_NAME $fastcgi_script_name; 

学分从#mono IRC频道的KnyghtMare中获取他的testing脚本。 通过消除,find了nginx conf所需的参数。 使用说明:您可能需要更改最后一行的IP和端口号以及HTTP_HOST

 SERVER_SOFTWARE="lighttpd/1.4.26" \ SERVER_NAME="127.0.0.1" \ GATEWAY_INTERFACE="CGI/1.1" \ SERVER_PORT="80" \ SERVER_ADDR="127.0.0.1" \ REMOTE_PORT="28886" \ REMOTE_ADDR="127.0.0.1" \ SCRIPT_NAME="/" \ PATH_INFO="" \ SCRIPT_FILENAME="/var/www/" \ DOCUMENT_ROOT="/var/www/" \ REQUEST_URI="/" \ QUERY_STRING="" \ REQUEST_METHOD="GET" \ REDIRECT_STATUS="200" \ SERVER_PROTOCOL="HTTP/1.1" \ HTTP_HOST="arch" \ HTTP_CONNECTION="keep-alive" \ HTTP_CACHE_CONTROL="max-age=0" \ HTTP_USER_AGENT="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.83 Safari/535.11" \ HTTP_ACCEPT="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" \ HTTP_ACCEPT_ENCODING="gzip,deflate" \ HTTP_ACCEPT_LANGUAGE="en-US,en;q=0.8" \ HTTP_ACCEPT_CHARSET="ISO-8859-1,utf-8;q=0.7,*;q=0.3" \ cgi-fcgi -bind -connect 127.0.0.1:9000 

经过一些修改以获取资源文件的工作,这是当前的configuration:

 server { listen 80; server_name arch; access_log /var/www/test/log/access.log; error_log /var/www/test/log/error.log debug; root /var/www/test/public; location / { try_files $uri @proxy; } location @proxy { fastcgi_index /Home; fastcgi_pass 127.0.0.1:9000; fastcgi_param PATH_INFO ""; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SERVER_PORT $server_port; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } }