Nginx引入了自己的项目开发步骤:
在第一步中更改tomcat的端口号
在slave01虚拟机上更改端口号192.168.68.130
69连接器端口=“8081”协议=“http/1.1”
70连接时间out=“20000”
71重定向端口=“8443”/
在主虚拟机上更改端口号192.168.68.129
连接器端口=“8082”协议=“http/1.1”
70连接时间out=“20000”
71重定向端口=“8443”/
步骤2 :将部署项目的虚拟目录添加到server.xml文件
配置步骤nginx的主配置文件
upstream tomcatServer01{
服务器192.168.68.12933608082 weight=3;
服务器192.168.68.13033608081 weight=1;
}
服务器{
listen 80
server_name zhiyou200_java;
位置/{
proxy_passhttp://Tomcat服务器01;
索引/
}
}
重新启动nginx服务器
cd /usr/local/nginx/sbin
./nginx-s重新加载
Nginx群集的其他配置“”java upstream tomcatServer1{ #代理名称是可选的
服务器192.168.68.12933608082 weight=3; #weightweightserver配置nginx传输APP应用服务器所在的虚拟主机的ip地址
服务器192.168.68.13033608081; 将nginx与另一个Tomcat APP应用程序服务器相关联
# server 192.168.68.13133608083 down; #表示当前的server APP应用服务器不参与负载平衡
#服务器192.168.68.13233608084 backup; #所有其他非backup计算机或down或繁忙服务器请求备份服务器
使用backup标记的APP应用程序服务器压力最小
server 192.168.68.1:8085 max _ fail=3; #允许请求失败的最大次数默认值1默认情况下每秒检测一次
#如果失败的请求超过最大次数,则返回proxy_next_upstream模块定义的错误
#服务器192.168.13433608086 fail _ time out=1000; #以连接请求超时时间max_fail次失败后暂停的时间为基准
}
` ` ` Nginx负载平衡环境中的会话共享问题web服务器通过Nginx连接,因此同一IP访问可能会将同一页分发到不同的APP应用服务器。
如果会话不同步,则会出现会话无法由多个服务共享的问题。
解决方案:第一种解决方案是使用session用cookie缓存。 这很容易实现,但如果客户端禁止饼干
那么,会话异步,cookie的网络安全低,里面的值是可以伪造的。
第二种解决方案:使用数据库将session值保存到数据库,如mysql
虽然实现了session同步,但会增加对数据库的I/o操作,增加数据库的负担,导致数据库读写效率低下
第三种解决方案是将其放在缓存中,并将session值保存到memcache或redis中
memcache也可以分散
虽然还实现了session同步,但是当memcahe将内存划分为各种规格的内存块时,会产生很多内存片段
内存块不足时,会发生内存溢出。
第四种解决方案:使用nginx本机ip_hash,可以将一个IP请求指向同一后端。 这将使后端与该IP下的客户端建立稳定的连接,并使会话同步
upstream tomcatServer1{ #代理名称可选
ip_hash;
服务器192.168.68.12933608082 weight=3; #weightweightserver配置nginx传输APP应用服务器所在的虚拟主机的ip地址
服务器192.168.68.13033608081; 将nginx与另一个Tomcat APP应用程序服务器相关联
}
无法实现分流
第五个解决方案: upstream_hash
可以解决ip_hash中的一些问题,并且可以使用名为upstream_hash的第三个模块。 此模块通常用作url_hash,还可以进行会话共享