Nginx Ssl On 报错 400 Bad Request
线上调整了下nginx配置后,出现
400 Bad Request The plain HTTP request was sent to HTTPS port
参考链接
https://github.com/alibaba/tengine/issues/854
注意ssl on会将整个virtual server都开启成ssl,比如如下配置,即使listen 80
没有配置ssl
,80端口也是使用https协议,如果使用http协议访问80端口就会返回报错(400)。
建议开启ssl使用listen指令,配置中ssl on
可以去掉。
server { listen 80; listen 443 ssl; ssl on; # 将整个server{}开启成https协议(包括server{}内的80端口) ... }
开发环境 nginx/1.19.0
存在 ssl on 时, 警告
nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /usr/local/nginx/conf/nginx.conf:39
线上环境 nginx/1.13.4
server { listen 80; listen 443; server_name example.com; ssl on; ssl_certificate /usr/local/nginx/conf/ssl/ssl.crt; ssl_certificate_key /usr/local/nginx/conf/ssl/ssl.key;
}
存在 ssl on 时, nginx -t 无任何警告提示