今天在腾讯云上申请到了免费的SSL证书,于是吧网站切换到了https,这时如果在使用http://www.2heng.xin/访问,即出现HTTP 400错误,所以需要设置Nginx将http请求跳转到https。一开始查到一些配置方案,比如这篇,但是方案一使用后出现400 Bad Request. The plain HTTP request was sent to HTTPS port,方案二太麻烦没试,方案三仅能跳转首页。腾讯云的SSL配置教程和方案一一样也建议使用rewrite ^(.*) https://$host$1 permanent;,但是实际是在我这里400 Bad Request,事实上我的Nginx是1.10.3版,很可能已经不支持那个指令了。

最后我找到这篇教程,二楼用户bashy亲测可行。

很简单地,就在配置文件中加入这段即可:

server {
    listen 80;
    #listen [::]:80; // IPv6监控相关,我选择关闭

    server_name www.2heng.xin;

    return 301 https://www.2heng.xin$request_uri;
}

server {
    // other server block
}

Q.E.D.