搭建Nginx(Https)+Tomcat实现负载均衡且Https自发证书配置

2018/09 11 10:09

一、准备工作

1、操作系统说明

使用的是windows64位操作系统

2、软件准备

nginx-1.15.3,tomcat-8.0.20,Openssl,jdk1.8.0_45

为了方便大家,直接提供网盘下载地址:https://pan.baidu.com/s/1CapSV6vYZp7SngeaVmKkZQ

Openssl用于生产数据证书的,直接解压即可使用,其他的三个软件不用介绍了百度下,安装教程多的是。

二、Openssl生成数字证书

1、cmd,进入Openssl的解压路径文件bin中

2、创建私钥

在命令行中执行命令:

输入密码后,再次重复输入确认密码。一定要记住此密码,后面会用到。

3、创建csr证书

在命令行中执行命令:

其中key文件为刚才生成的文件。

执行上述命令后,需要输入一系列的信息。输入的信息中最重要的为Common Name,这里输入的域名即为我们要使用https访问的域名 ,比如我输入的是localhost。其它的内容随便填即可。

以上步骤完成后,ssl文件夹内出现两个文件:chengxuyuanzhilu.csr 和 chengxuyuanzhilu.key

4、去除密码。

在加载SSL支持的Nginx并使用上述私钥时除去必须的口令,否则会在启动nginx的时候需要输入密码。

复制chengxuyuanzhilu.key并重命名为chengxuyuanzhilu.key.org。

在命令行中执行如下命令以去除口令:

然后输入密码,这个密码就是上文中在创建私钥的时候输入的密码。

5、生成crt证书

在命令行中执行此命令:

至此,证书生成完毕。我们发现,ssl文件夹中一共生成了4个文件。下面,配置https服务器的时候,我们需要用到的是其中的chengxuyuanzhilu.crt和chengxuyuanzhilu.key这两个文件。

6、在nginx的安裝目录中创建ssl文件,把这四个文件全部考进去即可

三、Nginx的负载均衡配置和Https配置

1、Nginx的https配置

nginx.conf这个文件在D:\java\nginx-1.15.3\conf目录下,打开这个nginx.conf文件。

找到HTTPS server配置的那一段(即包含有listen 443 ssl配置那一段),这段代码被注释掉了。所以,首先我们把该段代码前面的#号去掉。然后分别修改其中的ssl_certificate和ssl_certificate_key配置项为刚才所生成的chengxuyuanzhilu.crt和chengxuyuanzhilu.key这两个文件的目录。修改后的该段配置如下:

2、nginx的负载均衡配置

upstream 配置

http协议proxy_pass配置

https协议proxy_pass配置


配置http,https协议为了同时兼容这两种协议。

附加:nginx命令

 

四、测试搭建的服务

1、通过springboot创建两个web项目,内置tomcat容器就不需要安装了!再配置不同的服务暴露端口,由于站在巨人肩膀上,这就太简单了,那在下就不细细描述了!哈哈

controller代码

在两个springboot项目的application.properties文件中分别配置8080,8081端口

启动两个项目等待测试

2.创建一个springboot项目客户端,定时访问nginx服务器,nginx服务器在根据负载均衡的策略路由到指定的两个应用服务器上。url地址:https://localhost/pay/v1/orderQuery

Application类通过@EnableScheduling启用定时器

注意:由于是本地生成的数字证书,JDK不能通过根证书下载Nginx服务器上的证书,所有需要导入到客户端的JDK中。

cmd进入crt证书所在目录,输入命令“keytool -import -file ./chengxuyuanzhilu.crt -keystore "D:/java/jdk/jdk1.8.0_45/jre/lib/security/cacerts" -alias server8”后,需要输入口令,默认changeit。输入后即可导入成功! -file是你证书所在路径 ,-keystore是你本地JDK下的路径,-alias 是启用的别名

如需要查看证书是否导入成功,通过命令“keytool -list -keystore "D:/java/jdk/jdk1.8.0_45/jre/lib/security/cacerts"| findstr /i server8”即可,口令同上。

自动客户端项目,定时器每个5秒钟就会访问一次nginx服务器!

 

参考文件:

https://www.cnblogs.com/chasewade/p/7661290.html#

https://blog.csdn.net/dylanzr/article/details/52135196

https://www.cnblogs.com/langtianya/p/3334493.html

--转载请注明: https://www.guangboyuan.cn/%e6%90%ad%e5%bb%banginxhttpstomcat%e5%ae%9e%e7%8e%b0%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1%e4%b8%94https%e8%87%aa%e5%8f%91%e8%af%81%e4%b9%a6%e9%85%8d%e7%bd%ae/

发表回复

(必填)