由于小程序和Ios端的需要,公司的项目需要从原来的http协议扩展到https协议,因为项目本来就有采用nginx做了负载均衡,但是之前配置nginx的时候并没有配置关于https的内容,所以需要做这部分的内容。关于nginx实现动静分离和负载均衡可看我之前的博客。
1.数字证书生成
证书的购买要看公司的具体需求,我这里选用的是阿里云,关于证书部分的官网是这个地址:https://help.aliyun.com/product/28533.html?spm=5176.video54216.3.1.JkjOas
我选定的是最便宜的一款,不要钱,不过要找到它可能得费点时间哦,毕竟免费的东西嘛,阿里也把它隐藏的比较深。
它的缺点就是,只能保护一个域名,不支持通配符域名(意思就是说,比如你这个证书绑定的是baidu.com,它就只能保护www.baidu.com和baidu.com,而不能保护注入a.baidu.com这类子级域名),还有就是只能用一年。并且一个阿里云账户只能购买20个证书。
总的来说,对于我们搞测试来说,够用了,如果用作商业用途,那就最好建议花钱买。
购买过程我就不赘述了,购买完成以后,来到我的阿里云控制台,就可以看到刚才购买的证书了。
接下来一步是补全信息,主要是你想要绑定的域名和一些你的个人信息,如下图所示。
因为我选择的域名验证类型是DNS验证,所以还需要到dns配置一番,具体怎么配置在整个阿里云的平台上都有详实的记录。我就不赘述了。
审核很快,因为都是机器审核的,差不多也就10分钟就审核成功了。审核成功后的列表如下。以下是我申请的两个证书。
2.为nginx配置ssl证书
点击上述图片中的下载项,就进入如下页面。
其实这个页面把具体的操作说的十分清楚,并且还有视频教程。我简要地再总结一下。
第一步:下载证书for nginx
点击下载,就会得到一个证书文件夹,其中包含两个文件。
第二步:在nginx的conf目录下新建cert文件夹,将上述的两个文件放入该文件夹
第三步:修改nginx关于https部分的配置
我就直接贴我的配置吧:
1 server {
2 listen 443;
3 server_name www.wonyen.com wonyen.com;
4 ssl on;
5 root html;
6 index index.html index.htm;
7 ssl_certificate cert/xxxxxxxx684.pem;
8 ssl_certificate_key cert/xxxxxxxxxx0684.key;
9 ssl_session_timeout 5m;
10 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
11 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
12 ssl_prefer_server_ciphers on;
13 location ~ \.(gif|jpg|jpeg|png|bmp|swf|eot|svg|ttf|woff|mp3|mp4|wav|wmv|flv|f4v|icon)$ {
14 root apache-tomcat-8.0.9-windows-x86-yipin-8081/apache-tomcat-8.0.9/webapps/ROOT;
15 expires 30d;
16 }
17 location ~ \.(json|txt)$ {
18 root apache-tomcat-8.0.9-windows-x86-yipin-8081/apache-tomcat-8.0.9/webapps/ROOT;
19 expires 15d;
20 }
21 location ~ \.(css|js)$ {
22 root apache-tomcat-8.0.9-windows-x86-yipin-8081/apache-tomcat-8.0.9/webapps/ROOT;
23 expires 1d;
24 }
25 location ~ ^/\w+Att{
26 proxy_pass http://xdxfile.com;
27 }
28 location ~ ^/\w+Fill{
29 proxy_pass http://xdxfile.com;
30 }
31 location = /crowdFundSave{
32 proxy_pass http://xdxfile.com;
33 }
34 location = /crowdFundRewardSave{
35 proxy_pass http://xdxfile.com;
36 }
37 location = /garbageCategorySave{
38 proxy_pass http://xdxfile.com;
39 }
40 location = /mailTestAjax{
41 proxy_pass http://xdx8082.com;
42 }
43 location = /mailSendAjax{
44 proxy_pass http://xdx8082.com;
45 }
46 location = /mailOldAjax{
47 proxy_pass http://xdx8082.com;
48 }
49 location = /wechatAuthority{
50 proxy_pass http://xdxall.com;
51 }
52 location = /compressImg{
53 proxy_pass http://xdxfile.com;
54 }
55 location = /compressImgAll{
56 proxy_pass http://xdxfile.com;
57 }
58 location = /lifeMenuHome{
59 proxy_pass http://xdxfile.com;
60 }
61 location = /lifeOrderHome{
62 proxy_pass http://xdxfile.com;
63 }
64 location = /lifeCenterAjax{
65 proxy_pass http://xdxfile.com;
66 }
67 location = /startBusiness{
68 proxy_pass http://xdxfile.com;
69 }
70 location ~ ^/ueditor1_4_3{
71 proxy_pass http://xdxfile.com;
72 }
73 location = /freightByIp{
74 proxy_pass http://xdx8082.com;
75 proxy_redirect off;
76 proxy_set_header Host $host;
77 proxy_set_header X-Real-IP $remote_addr;
78 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
79 }
80 location ~ .*$ {
81 index index;
82 proxy_pass http://xdx.com;
83 }
84 error_page 404 /Error404.jsp;
85 error_page 500 502 503 504 /Error404.jsp;
86 location = /Error404.jsp {
87 proxy_pass http://xdxfile.com;
88 }
89 }
有关于ssl的配置集中在7--12行,其他的配置就跟普通的http配置无二致。
第四步:重启nginx服务器
经过如上几个步骤,你的nginx服务器就既可以支持http,又可以支持https了,是不是很简单,赶紧试试吧。