### 证书申请 要使域名支持`https`首先需要申请`SSL`证书,本服务器使用的是阿里云,可以在阿里云中申请免费的证书。 在控制台中找到SSL证书,点击购买,选择免费的证书。 [![点击查看大图](/upload/1562838520.jpg "点击查看大图")](/upload/1562838520.jpg "点击查看大图") 购买成功之后在证书列表中就能看到了,点击申请,绑定域名之后验证域名所有权,审核通过之后就可以下载了。 选择服务器类型为`nginx`。 ### Nginx开启HTTPS 在`nginx`的安装目录下的 **conf** 文件中新建 **cert** 文件夹,并把下载的证书文件放进去。 在`nginx.conf`中加入如下配置: ```shell server { listen 443 ssl; server_name ******; ssl_certificate cert/******.pem; ssl_certificate_key cert/******.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_prefer_server_ciphers on; location / { ...... } } ``` 重启之后就可以使用**https**来访问网站了。 ### HTTP转发到HTTPS 要使 **http** 的请求跳转到 **https** 只需要使用`rewrite`或者`return`关键字。 可以配置到 **server** 模块中,也可以配置到 **location** 模块中,如果需要所有的 **http** 请求都转发到 **https** 请求中,则配置到 **server** 中,如果是指定的路径跳转,则配置到 **location** 中。 `nginx.conf`的配置如下: ```shell server { listen 80; server_name ******; location / { return 301 https://$server_name$request_uri; } } ``` 重启之后,**http**的请求会自动跳转到**https**中。 ### 注意事项 - 老版本的`nginx`监听**443**端口,使用的是`listen 443`,新版的需要改成`listen 443 ssl`,不然会出现无法访问的情况。 - 在 **https** 的页面中不能出现 **http** 的请求,所以需要保证所有的静态资源都使用 **https** 请求