今天我们来实现nginx做为反向代理服务器, 将前端请求转发到2个SpringBoot的项目上, 由于在实际产线操作时, 要求所有后台web服务的session中的数据保持一致, 使用redis来存储SpringBoot的session数据
项目对应的实例代码可以通过右侧【下载实例】按钮获取
开发工具: IntelliJ IDEA2017 JDK1.8 Redis3.2 Maven3.0.2, nginx1.14.0
【项目包含内容】(见下图):
1. 下载并且安装IntellJ, 将JDK1.8与Maven3.0.2配置在IntellJ中
2. 示例使用windows版本的nginx1.14.0, 解压后即可使用
注意: 不要直接运行nginx.exe来启动(会导致动态修改配置无法生效), 打开一个dos窗口,使用命令 start nginx来启动,
配置文件为: conf/nginx.conf, 修改后,在命令行窗口 输入命令: nginx -s reload 可以使配置动态生效, 无须重启nginx
3. 下载并且安装redis
redis-server.ext启动服务
redis-cli.exe连接redis服务, 命令: config set requirepass 123456 来设置访问redis需要的密码
4. 使用 IntellJ打开实例代码
提供接口getUser, 从session中获取用户信息(有则直接获取,无则设置用户信息),再将用户信息打印出来
启动二个SessionShare服务,分别在8080, 8090两个端口进行监听
5. 配置nginx的nginx.conf
下面有二个location, 当项目SessionShare的根路径未设置时, 第一个location产生作用;
当项目SessionShare的根路径设置为SessionShare时,第二个location产生作用;
upstream tomcats { server 192.168.1.4:8080; server 192.168.1.4:8090; } server { listen 80; server_name 192.168.1.4; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://tomcats; root F:/XunLei/nginxLocation; index index.html index.htm; } location /SessionShare { proxy_pass http://tomcats; root F:/XunLei/nginxLocation; index index.html index.htm; }
6. 在浏览器地址栏中输入 http://localhost/SessionShare/getUser, 共访问4次
到这里我们可以看到nginx实现了反向代理并且可以在8080, 8090二个端口进行负载均衡