Nginx + IIS + Web前端(Spring MVC)——负载均衡(二)

时间:2022-09-03 19:37:29

上一篇博客中,我们说到了Nginx服务器的搭建,这篇里面,我们看看如何将web项目发布到IIS中了之后,Nginx会将User的Request服务转到不同的服务器中。


首先,对我们的web项目中的web.config文件添加节点:


<span lang="zh-CN" style=""><sessionState mode="SQLServer" sqlConnectionString="Data Source=192.168.21.**;User ID=****;Password=************;" timeout="60"/>
<machineKey decryption="AES" decryptionKey="5F1557925F8D24767DC286744FDD864B90C03395B67A9DBD,IsolateApps" validationKey="7A71B5D7982E03DB59B8C951E8C55FA1538375259A1AF015AECC2A9ADC57A6A2ABC60A687E33570CA3465FA0902EC9C7BAAA5104ECF1B30B1F0A028EA9538C47,IsolateApps" />
</span>


当然了,上面的配置文件中的decryption和decryptionKey都是从下面的IIS中获取到的:


大家可能要问了,为什么要添加这样的节点?当我们Nginx将request请求发到不同的服务器中的时候,用户的Session信息是需要共享的,这就是前面的状态服务器,也就是说,一个用户request,两个IIS是通过访问状态服务器来识别用户是否存在这样的权限,访问我们的系统,或者进行什么样的操作。


这样,将该Web项目发布到IIS上面,我们需要做的是:


第一步:生成计算机秘钥


Nginx + IIS + Web前端(Spring MVC)——负载均衡(二)


这是在发布我们Web服务器的IIS服务器上两台服务器中,那一台都可以。


双击进入之后,是这样的:


Nginx + IIS + Web前端(Spring MVC)——负载均衡(二)


我们这里选择的加密方式,决定了上面Web.config文件中的:


<span style="font-family:KaiTi_GB2312;font-size:18px;">machineKey decryption="AES"</span>


后面两个


decryptionKey="5F1557925F8D24767DC286744FDD864B90C03395B67A9DBD,IsolateApps" validationKey="7A71B5D7982E03DB59B8C951E8C55FA1538375259A1AF015AECC2A9ADC57A6A2ABC60A687E33570CA3465FA0902EC9C7BAAA5104ECF1B30B1F0A028EA9538C47,IsolateApps" />


其实就是生成秘钥之后的两个密钥。


第二步:将我们的Web项目发布到我们的IIS中。


对我们的web项目中的web.config文件添加节点:


<span lang="zh-CN" style=""><sessionState mode="SQLServer" sqlConnectionString="Data Source=192.168.21.**;User ID=****;Password=************;" timeout="60"/>
<machineKey decryption="AES" decryptionKey="5F1557925F8D24767DC286744FDD864B90C03395B67A9DBD,IsolateApps" validationKey="7A71B5D7982E03DB59B8C951E8C55FA1538375259A1AF015AECC2A9ADC57A6A2ABC60A687E33570CA3465FA0902EC9C7BAAA5104ECF1B30B1F0A028EA9538C47,IsolateApps" />
</span>


当然了,配置文件中的decryption和decryptionKey都是从上面的IIS中获取到的:


这样,Web项目配置好这样的节点之后,将该Web项目发布到IIS上面



第三步:运行程序,我们访问的时候,只需要访问我们的Nginx服务器就可以了。


另外,状态服务器上就是Session信息存在在哪里呢?


Nginx + IIS + Web前端(Spring MVC)——负载均衡(二)


我们打开第二张表:


Nginx + IIS + Web前端(Spring MVC)——负载均衡(二)


这样我们就可以看到我们的Session信息了,每一个用户登陆之后,就会出现一条Session信息,这个Session信息中:

SessionId:用户名+计算机信息组成的(好像是计算机的MAC地址)

Created:创建时间

Expires:销毁时间

LockData:用户访问系统的最新更新时间,我们的默认的Timeout如果为60的话,那么就是Expires的日期是LockDate日期推迟1个小时,这个Web.config文件中设置的:


<span style="font-family:KaiTi_GB2312;font-size:18px;">sessionState mode="SQLServer" sqlConnectionString="Data Source=192.168.21.**;User ID=****;Password=************;" timeout="60"</span>


如果用户换了浏览器,或者在两外一台电脑上登陆的话,Session信息就会重新出现一条。


结语:


我们做到这里,还有可以做的更好的地方,大家试想一下,每一次用户登陆Session的信息就会出现在数据库中进行更新,而每一个的数据库的开始和关闭,都是一次IO操作,我们的访问速度会受到影响,我们可以将Session的信息放到缓存的集群里面,就可以解决这件事情,如果我们将我们的Session信息放到Redis集群,或者Memcached集群,这个问题就可以解决了,我们最终的效果图是这样的:


Nginx + IIS + Web前端(Spring MVC)——负载均衡(二)



参考博客:http://blog.csdn.net/zhanghan18333611647/article/details/50284629