Ubuntu下Nginx免费开启HTTPS访问
最近很多的网站(淘宝、百度、知乎等)都开启了全站HTTPS访问,HTTPS的好处就不多说了,大家可以自己Google一下。为了赶潮流,我也想为自己的网站开启全站HTTPS。
一、申请SSL证书
其实理论上,我们是可以自己生成证书的,但是自己生成的证书不会被认可,在网站被访问的时候会有相应的提示。所以我们必须去申请SSL证书。一般情况下,SSL证书是需要购买的,但是也有免费提供的,比如沃通WoSign就提供免费的SSL证书。由于网上有详细的申请指南,我这里就不多说了,大家直接去申请就行了。
申请地址:https://buy.wosign.com/free/
申请指南:https://freessl.wosign.com/1405.html
二、开启Nginx对SSL的支持
我在配置过程中,发现总是失败,后来查了一下资料,说Nginx必须开启–with-http_ssl_module才可以使用SSL。但是通过apt-get安装的Nginx默认是没有开启–with-http_ssl_module的,于是乎查了一堆网上的资料,发现都说需要重新编译Nginx。我懒得写一堆编译参数,后来发现,apt-get仓库有一个nginx-full,网上说这个Nginx会开启所有的功能。通过apt-get安装,发现果然开启了–with-http_ssl_module。
sudo apt-get install nginx-full
三、配置Nginx
在Nginx的配置文件server节点中加入如下代码:
server { listen 443; ssl on; ssl_certificate /usr/local/nginx/conf/server.crt; ssl_certificate_key /usr/local/nginx/conf/server_key.key; }
注意,请替换配置文件中的两个文件路径。
重启Nginx之后,网站成功开启HTTPS访问。
四、优化
开启HTTPS访问之后,有时候我们希望HTTP访问的链接都跳转到HTTPS。这就需要在Nginx配置文件中加入如下代码:
server { listen 80; server_name localhost; rewrite ^(.*)$ https://$host$1 permanent; location / { root html; index index.html index.htm; }