Nginx,SiginalR和FastCGI与单声道:未找到应用程序
我试图让所有这些设置运行,我现在失败了。我主要想测试Websockets,并且由于IIS 7.5不支持它们,我试图用Nginx和Mono/FastCGI来设置它。Nginx,SiginalR和FastCGI与单声道:未找到应用程序
所以,一切都是基于Windows的,没有linux,没有unix:windows。目前,所有我从打电话http://localhost:7171/app(或http://127.0.0.1:7171/app)得到的是这样的错误:
No Application Found Unable to find a matching application for request: Host localhost:7171 Port 7171 Request Path /app/index.html Physical Path C:\nginx\html/app/index.html
这里是CONFIGS现在:
fastcgi.conf
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
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_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;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
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_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;
# 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;
nginx.conf
server {
listen 7171;
server_name 127.0.0.1;
#charset koi8-r;
#access_log logs/host.access.log main;
location/{
#fastcgi_index index.html;
#fastcgi_pass 127.0.0.1:9000;
#include C:\\nginx\\conf\\fastcgi_params;
}
location /app {
fastcgi_index index.html;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
}
,这里是用来启动FastCGI的CMD线:
"C:\Program Files (x86)\Mono-2.10.8\bin\fastcgi-mono-server4" /socket=tcp:127.0.0.1:9000 /applications=/:/c://nginx//html//app
感谢一大堆!
It almost work but signalr's scripts (signalr/hubs) are just giving me 404's now. Working on it...
在与SignalR的开发人员聊天后,他们证实SignalR不受Nginx + FastCgi混合支持。
如果您打算使用SignalR,我会推荐使用IIS。查看他们的网站以获取更多关于SignalR的信息。
干杯
发现问题的人谁想要得到它的工作。看起来,启动fast-cgi-mono-server4并指向绝对路径的/ application不起作用。我必须使用相对路径启动它:
"C:\Program Files (x86)\Mono-2.10.8\bin\fastcgi-mono-server4" /applications=/:/..\\..\\..\\nginx\\html\\app\\ /socket=tcp:127.0.0.1:9000
此外,Nginx似乎无法路由除/以外的位置。所以你必须在根上只有一个应用程序。
location/{
root c:\\nginx\\html\\app;
fastcgi_index index.html;
fastcgi_pass 127.0.0.1:9000;
include C:\\nginx\\conf\\fastcgi_params;
}
它几乎工作,但信号员的脚本(信号器/集线器)现在只是给我404。处理它...
非常感谢。关于相对路径的建议节省了我的时间。 – ajukraine 2013-02-22 12:38:42
不是说它不被支持。它还不能完全支持单声道。 SignalR的下一个版本将支持多个主机。 – davidfowl 2012-01-19 06:04:44