2014-12-18 3 views
-2

Когда я пытаюсь открыть мой сайт с помощью ssl, я получаю сообщение об ошибке ERR_CONNECTION_RESET.Конфигурация Nginx для SSL

Нет информации в журналах.

Порт 443 открыт в брандмауэре. На http все работает отлично.

CentOS7 (Linux DOMAIN.COM 3.10.0-123.9.3.el7.x86_64 # 1 SMP чт 6 ноября 15:06:03 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux)

Nginx версия: Nginx/1.6.2

OpenSSL 1.0.1e-ФИПС 11 фев 2013

Вот мой Nginx конфигурационный файл:

server { 
    listen 80; 
    listen 443 ssl; 

    server_name domain.com www.domain.com; 

    #SSL config 
    ssl on; 
    ssl_certificate /etc/nginx/ssl/domain.crt; 
    ssl_certificate_key /etc/nginx/ssl/domain.key; 
    ssl_session_cache shared:SSL:10m; 
    ssl_session_timeout 10m; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"; 
    ssl_prefer_server_ciphers on; 
    ssl_stapling on; 
    resolver 8.8.8.8; 
    ssl_stapling_verify on; 

    root /home/main/www; 
    access_log /var/log/nginx/domain.com-access.log main buffer=16k; 
    error_log /var/log/nginx/domain.com-dev-error.log warn; 

    location = /favicon.ico { 
     log_not_found off; 
     access_log off; 
    } 

    location = /robots.txt { access_log off; log_not_found off; } 
    location ~ /\.   { access_log off; log_not_found off; deny all; } 
    location ~ ~$   { access_log off; log_not_found off; deny all; } 

    location ~* .(js|css|png|jpg|jpeg|gif|ico|xml|swf|flv|eot|ttf|woff|pdf|xls|htc|html|unity3d)$ { 
    add_header Pragma "public"; 
    add_header Cache-Control "public, must-revalidate, proxy-revalidate"; 
    access_log off; 
     log_not_found off; 
     expires 360d; 
    } 

    location ~ /.ht { 
     deny all; 
     access_log off; 
     log_not_found off; 
} 

    location ~* \.php$ { 
     #rewrite ^/(.*)/$ /$1 permanent; 
     fastcgi_split_path_info ^(.+.php)(.*)$; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_param SCRIPT_NAME $fastcgi_script_name; 
     fastcgi_param PATH_INFO $fastcgi_path_info; 
     fastcgi_index index.php; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     include  /etc/nginx/fastcgi_params; 
    } 

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

результаты Telnet:

[[email protected] ~]$ telnet domain.com 80 
Trying 123.45.67.89... 
Connected to domain.com. 
Escape character is '^]'. 
^] 
HTTP/1.1 400 Bad Request 
Server: nginx/1.6.2 
Date: Thu, 18 Dec 2014 13:13:20 GMT 
Content-Type: text/html 
Content-Length: 172 
Connection: close 

<html> 
<head><title>400 Bad Request</title></head> 
<body bgcolor="white"> 
<center><h1>400 Bad Request</h1></center> 
<hr><center>nginx/1.6.2</center> 
</body> 
</html> 
Connection closed by foreign host. 
[[email protected] ~]$ telnet domain.com 443 
Trying 123.45.67.89... 
Connected to domain.com. 
Escape character is '^]'. 
Connection closed by foreign host. 

Проблема была решена. Я нахожусь в Глобальной строке файла конфигурации:

server { listen 443 ssl; server_name _; access_log off; error_log off; return 444; } 

После того как вы удалите его, все работает нормально.

+0

пожалуйста, покажите вывод 'NETSTAT -tulpen | Grep 443', чтобы убедиться, что Nginx действительно прослушивает порт 443. Alos, есть ошибки в error_log? –

+0

tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 0 17055261 29781/nginx: master –

ответ

-1

"Слушать 443 ssl" выглядит излишним. вы должны поставить «Listen 443» (и сохранить «ssl on» позже в конфиге)

+0

Уже попробовать ... ничего не меняется. –

+0

[Это уже не так) (http://nginx.org/en/docs/http/configuring_https_servers.html): «До 0,7.14 SSL нельзя было выборочно активировать для отдельных сокетов прослушивания, как показано выше. SSL может быть включен только для всего сервера с помощью директивы ssl, что делает невозможным настройку одного сервера HTTP/HTTPS. Для решения этой проблемы был добавлен параметр ssl директивы listen. Использование директивы ssl в современных версиях таким образом, обескураживается ». – Kellen

0

прослушать 433 ssl верен в этой настройке. Это позволяет регулярным и ssl-определениям находиться в одном блоке, но сообщает nginx разрешать только ssl для запросов на порт 443.

Возможно, проблема связана с вашим файлом сертификата. Проверьте этот вопрос по тому же вопросу SSL configuration on nginx 1.6

1

Проблема была решена. Я нахожусь в Глобальной строке файла конфигурации:

server { listen 443 ssl; server_name _; access_log off; error_log off; return 444; } 

После извлечения, все работает нормально.

- Гулый Борис

Смежные вопросы