Nginx, SiginalR и FastCGI с моно: приложение не найдено - PullRequest
2 голосов
/ 18 января 2012

Я пытаюсь запустить настройку со всем этим, и сейчас я терплю неудачу. В основном я хочу протестировать Websockets, и, поскольку IIS 7.5 не поддерживает их, я пытаюсь настроить его с помощью Nginx и Mono / 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

Вот конфиги прямо сейчас:

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

и вот строка cmd, используемая для запуска fastcgi:

"C:\Program Files (x86)\Mono-2.10.8\bin\fastcgi-mono-server4" /socket=tcp:127.0.0.1:9000 /applications=/:/c://nginx//html//app

Спасибо большое!

Ответы [ 2 ]

2 голосов
/ 18 января 2012

Нашел проблему для всех, кто хочет заставить его работать. Кажется, что запуск 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 сейчас. Работаю над этим ...

1 голос
/ 19 января 2012

Это почти работает, но скрипты сигнализатора (signalr / hubs) просто дают мне 404.Работая над этим ...

После общения с разработчиками SignalR, они подтвердили, что SignalR не поддерживается миксом Nginx + FastCgi.

Я бы порекомендовал использовать IIS, если вы планируете использовать SignalR.Проверьте их веб-сайт для получения дополнительной информации о SignalR.

Cheers

...