2

私の問題は、NGINX を再起動すると、HTTP は正常に動作しますが、HTTPS が利用できないことです。接続タイムアウトが発生します。ローカルで接続できることを確認し、証明書を確認しました。これもうまくいきます。私はファイアウォールを持っていませんが、ポートまたは何かがブロックされているようです。助けてください...

server {
    server_name help.XXXX.de;
    listen 80;
    listen 443 default ssl;

    ssl on;
    ssl_certificate      /etc/ssl/localcerts/0001_MAILcert.pem;
    ssl_certificate_key  /etc/ssl/localcerts/0001_MAILcert.key;
    ssl_ciphers               SSLv3+HIGH:RC4+MEDIUM:!aNULL:!eNULL:!3DES:!MD5:@STRENGTH;
    ssl_prefer_server_ciphers on;
    ssl_protocols             TLSv1;

    access_log /var/www/XXXX.de/help.XXXX.de/logs/access.help.log main;
    index index.html index.htm index.php;
    root /var/www/XXXX.de/help.XXXX.de/htdocs;

    location / {
        try_files $uri $uri/ /index.php;
}

location ~ \.php$ {
    try_files $uri @rewrite;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
}

NGINX 1.2.6 および PHP-FPM で Debian を使用しています

4

1 に答える 1

3

2 番目のロケーション ブロックは、メインのサーバー ブロック内にある必要があります。そうしないと、ssl 構成が適用されません。

構成が HTTP で機能する理由は、 listen ディレクティブのデフォルトが で*:80あり、これが 2 番目のロケーション ブロックに適用されているためです。これは、外部サーバー ブロック構成がないためです。

おそらく関係try_files $uri @rewrite;ありませんが、構成に という名前の場所がないため、行が間違っているように見えますlocation @rewriteが、それによって https が使用できなくなることはありません。

また、ディレクティブがこの機能を実行sslするため、ディレクティブは必要ありません。listen

これを試すことができますか:

server {
    server_name help.XXXX.de;
    listen 80;
    listen 443 default ssl;

    ssl_certificate      /etc/ssl/localcerts/0001_MAILcert.pem;
    ssl_certificate_key  /etc/ssl/localcerts/0001_MAILcert.key;
    ssl_ciphers               SSLv3+HIGH:RC4+MEDIUM:!aNULL:!eNULL:!3DES:!MD5:@STRENGTH;
    ssl_prefer_server_ciphers on;
    ssl_protocols             TLSv1;

    access_log /var/www/XXXX.de/help.XXXX.de/logs/access.help.log main;
    index index.html index.htm index.php;
    root /var/www/XXXX.de/help.XXXX.de/htdocs;

    location / {
        try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
        try_files $uri @rewrite;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

それでも接続に問題がある場合は、Nginx が SSL モジュールでコンパイルされていることを確認してください。

nginx -V

出力に以下の行が含まれていない場合は、再コンパイルする必要があります。

--with-http_ssl_module
于 2013-01-30T16:42:11.017 に答える