问题现象:Nginx站点中域名部署好了SSL证书,使用https://blog.tag.gg方式访问出现报错“400 Bad Request:The plain HTTP request was sent to HTTPS port”检查证书配置和端口监听等没有发现问题,最终通过分析nginx配置文件规则解决了这个问题。 
 
 
问题原因:报错字面理解意思为“ 普通HTTP请求已发送到HTTPS端口 ”一般情况是nginx部署证书的规则中有使用“ssl on;”参数。 
解决方法: 
1、分析nginx站点ssl证书部署规则,原本的规则如下 
server { 
    listen       443; 
    server_name blog.tag.gg; 
    charset UTF-8; 
    ssl on; 
    ssl_certificate   /ssl/blog.tag.gg.pem; 
    ssl_certificate_key  /ssl/blog.tag.gg.key; 
    ssl_session_timeout 5m; 
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
分析上面规则看有启用“ ssl on;”监听设置规则为“ listen   443;” 
2、将“ ssl on;”注释掉,将 listen   443;”修改为 “listen       443 ssl;” 
修改后的规则如下: 
server { 
    listen       443 ssl; 
    server_name blog.tag.gg; 
    charset UTF-8; 
    #ssl on; 
    ssl_certificate   /ssl/blog.tag.gg.pem; 
    ssl_certificate_key  /ssl/blog.tag.gg.key; 
    ssl_session_timeout 5m; 
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
修改后记得重载nginx服务使其生效。 |