最近做每天学Java微信小程序已经上线了,有过微信小程序开发的经验的小伙伴肯定都知道微信小程序要想上线,首先我们请求的域名必须是HTTPS,而且不能携带端口号。
在最初的时候,因为使用Spring Boot框架做开发,直接将证书绑定在这个项目上,虽然实现了小程序的上线,但是现在遇到一些问题:小程序接口占用了443端口,那我部署在这个服务器上的其他项目就只能通过端口去访问了,而且如果后续为小程序接口新建一个项目,在只有一台服务器的情况下,我想如何实现其他项目不输入端口号,新建的小程序接口,也可以放在这台服务器上呢?我想到了Nginx根据路径进行请求分发:请求既然可以分发到其他服务器上,自然也可以分发到本机,所以我就决定这样来做。
关于部署Nginx【https://blog.csdn.net/qq442270636/article/details/78980269】其实在年初的时候就玩过了,所以对于安装还是比较轻松的,这里就不在赘述了。
说一下绑定SSL证书的过程:
首先是要有SSL证书,我是在腾讯云上申请的证书。
其次就是部署Nginx。
然后就是配置Nginx的配置文件了。
我的nginx配置文件是在 /usr/local/nginx/conf 下,大家可以根据 whereis nginx 找自己的配置文件。
那么配置文件如何修改呢?
server {
listen 8090;
server_name localhost;
ssl on;
ssl_certificate /home/ssl/*******.crt; #ssl证书存放路径
ssl_certificate_key /home/ssl/********.key; #ssl证书存放路径
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 /xcx{
proxy_pass https://localhost/xcx;
}
location / {
root html;
index index.html index.htm;
}
}
在nginx.conf插入上面这段脚本,因为我已经使用了443端口,所以使用8090,大家实际项目中更换即可。
下面是我在部署中遇到的问题:
启动的时候报错:
nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/nginx.conf:36
解决方案:
到Nginx的解压目录下(是解压目录,不是启动Nginx的目录)。
跟conf同级有一个configure的执行文件。
我们执行它:
第一步: ./configure --with-http_ssl_module
第二步:如果报错(SSL modules require the OpenSSL library),执行这个脚本 yum -y install openssl openssl-devel
第三步:执行 :./configure
第四步:执行:./configure --with-http_ssl_module
第五步:执行:make
第六步:把原来nginx备份 :cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bak(你也可以不备份,最好备份)
第七步:用新的nginx覆盖旧的 cp objs/nginx /usr/local/nginx/sbin/nginx 如果显示资源被使用(cp: cannot create regular file ‘/usr/local/nginx/sbin/nginx’: Text file busy)所以最好开始的时候把nginx服务关掉。
第八步:测试或者重启服务。
这里我就成功的将SSL证书绑定了。如果遇到其他启动错误,可以先自己看一下,自己是不是单词拼写有问题,少了符号之类的,如果报的错误看不懂,就百度了。
更多文章请关注公众号:每天学Java。想获得更多最新面试题请进入小程序:每天学Java
公众号二维码: 小程序二维码: