2012-01-18 37 views
1

我試圖讓所有這些設置運行,我現在失敗了。我主要想測試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 

感謝一大堆!

回答

1

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的信息。

乾杯

+2

不是說它不被支持。它還不能完全支持單聲道。 SignalR的下一個版本將支持多個主機。 – davidfowl 2012-01-19 06:04:44

2

發現問題的人誰想要得到它的工作。看起來,啓動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。處理它...

+0

非常感謝。關於相對路徑的建議節省了我的時間。 – ajukraine 2013-02-22 12:38:42

相關問題