w3ctech

HTTP访问,Nginx返回:400 Bad Request The plain HTTP request was sent to HTTPS port

今天可能有朋友发现访问w3ctech的时候,出现短暂的无法访问的情况,哪是因为今天下午我们在升级服务器。

w3ctech使用的是thinkjs开发的,服务器使用的是Ubuntu系统,之前使用的是Ubuntu 4.4,这不,我们的服务器是由Ucloud提供的,今天他们说要可以给我们升级一下,所以我就重新弄了一台机器,将Ubuntu从原来的14.4换成了16.4,然后安装了Nginx最新稳定版本1.12.0。当然还安装了比如所需要的Node.js等...

然后将原来的服务器上的Nginx配置直接拿过来,然后将域名解析成功以后,访问https://w3ctech.com 没有问题,以为一切大功告成了。

w3ctech配置了HTTPS,但是并没有配置HSTS,所以我现在配置的是当用户是HTTP访问的时候,使用301跳转到HTTPS。

没想到当HTTP访问w3ctech.com(也就是http://w3ctech.com)的时候,发现Nginx 报错了,直接在浏览器中显示400 Bad Request The plain HTTP request was sent to HTTPS port。

查找了好多方法,都不得其法,都没有搞定,最后发现只需要将80端口设置为default_server就可以了。代码如下:

server {
       listen         80 default_server;
       listen    [::]:80 default_server;
       server_name    w3ctech.com  www.w3ctech.com;
       return         301 https://$server_name$request_uri;
}

具体为什么,我还没有弄清楚,欢迎有明白的朋友给帮忙解释解释,如果你也遇到这样的问题,希望可以帮到你,同时在这里记录一下,便于以后帮助到自己!

w3ctech微信

扫码关注w3ctech微信公众号

共收到0条回复