安装Nginx
Nginx配置SSL首先要保证安装的时候安装的有SSL模块
如果没有的话打开ssl会报如下错误
[nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.co]
安装nginx
#如果之前有安装过的,想把之前的配置复制过来,可以在nginx目录下使用此命令查看之前的配置
/usr/local/nginx/sbin/nginx -V
#下载-->解压nginx 然后进入源码目录执行如下命令进行安装
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make
make install
make install完毕会在我们指定的 /usr/local/nginx目录出现编译后的nginx
尝试启动nginx
/usr/local/nginx/sbin/nginx
发现报错:
nginx: [emerg] BIO_new_file("/usr/local/nginx/conf/cert.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/usr/local/nginx/conf/cert.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)
这说明ssl模块已经有了, 只不过我们还没有给nginx配置证书而已
配置证书
阿里云为例:
控制台==>域名==>选中你的域名==>管理==>开启SSL==>购买证书页面(没钱不买,点左上角"回到证书列表")==>点击"购买证书"==>选择免费版(个人) 免费版只可以给单域名使用一年,对个人来说足够了
- PS: (购买后一般几分钟就能签发下来)
==>回到证书列表
找到刚才购买的证书点击下载, 选择你使用证书的方式(推荐使用Nginx,省得换个Tomcat就得重新部署一遍证书)
==>将证书放在你的Nginx所在服务器上, 比如我 放在/root/cert目录下
==>配置nginx.conf 告诉Nginx证书所在位置
server {
listen 443 ssl; #https默认端口
server_name www.sourcecoder.cn; #证书绑定的域名
ssl_certificate /root/cert/3710808_www.sourcecoder.cn.pem; #证书位置
ssl_certificate_key /root/cert/3710808_www.sourcecoder.cn.key;#证书key位置
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #加密协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #加密套件配置
ssl_prefer_server_ciphers on;#打开
location / {
root html;
index index.html index.htm;
}
}
#将80端口的请求转发到443
server {
listen 80;
server_name www.sourcecoder.cn;#填写绑定证书的域名
rewrite ^ https://$http_host$request_uri? permanent; # 将http转到https
}
加密协议的配置有特殊兼容需求的可以参考:http://f2ex.cn/properly-enable-http2-support/
==>重启Nginx
nginx -t #测试配置是否有误
service nginx restart
==>没有问题的话访问你的域名,发现已经是Https协议了! 成功!