Как включить HTTPS с помощью fastcgi-mono-server4 и nginx?

Я пытаюсь активировать HTTPS на сервере Debian 7, на котором запущены nginx и fastcgi-mono-server4. Я также использую ServiceStack.

Когда я использую порт 80 (не SSL), все работает нормально. Когда я меняю его на порт 443 (SSL), я получаю сообщение об ошибке при попытке позвонить на сервер. Ошибка:

No Application Found

Unable to find a matching application for request:

    Host    business.myserver.com
    Port    443
    Request Path    /api
    Physical Path   /var/www/business.myserver.com/api

Вот мой файл nginx.conf:

    server {
            listen 443 ssl;

            fastcgi_param HTTPS on;

            ssl_certificate /etc/nginx/ssl/nginx.crt;
            ssl_certificate_key /etc/nginx/ssl/nginx.key;

            server_name business.myserver.com;
            root /var/www/business.myserver.com;

            location /api {

                    error_log /var/log/nginx/api-error.log;

                    #add_header Access-Control-Allow-Origin "*";
                    add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
                    add_header Access-Control-Max-Age 1728000;
                    add_header Access-Control-Allow-Headers "Origin, Content-Type, Authorization";
                    #add_header Access-Control-Allow-Credentials "true";

                    index index.html index.htm default.aspx Default.aspx;

                    fastcgi_index /api;
                    fastcgi_pass 127.0.0.1:9000;

                    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;

                    fastcgi_param PATH_INFO "";
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

                    # HACK: something is causing ServiceStack / ASP.Net -> Mono -> FastCGI
                    # to encode 'deflate' again, so force request to disallow gzip or deflate
                    fastcgi_param HTTP_ACCEPT_ENCODING "";
            }
    }

Любая помощь или подсказка будут высоко оценены.


person Martin Larivière    schedule 29.04.2015    source источник
comment
Вы поняли это? у меня точно такая же проблема   -  person Hugo Migneron    schedule 28.01.2016


Ответы (1)


У меня была та же проблема, но в моем случае она возникла из-за конфигурации fastcgi-mono-server4.

Когда вы запускаете эту команду, вы указываете папку конфигурации. Что-то типа

fastcgi-mono-server4 --appconfigdir '/var/www/mono-fastcgi ...'

И эта папка /var/www/mono-fastcgi содержит .webapp файл конфигурации. Вам нужно убедиться, что вы слушаете там порт 443. Например :

<apps>
  <web-application>
    <name>aspnet</name>
    <vhost>my/application.com</vhost>
    <vport>443</vport>
    <vpath>/</vpath>
    <path>/srv/www/aspnet</path>
  </web-application>
</apps>

В моем случае <vport> было 80, и именно это вызывало эту ошибку.

person Hugo Migneron    schedule 28.01.2016