nginx反向代理+负载均衡上传webshell重难点+apache漏洞

由于apache具有良好的稳定性,但不能提供大量的连接并发请求;而nginx能够提供强大的连接并发请求而没有很好的稳定性,结合这两种截然不同的特征,可以在内网的前端使用nginx作为反向代理服务器,后方的apache作为原始服务器,这样既满足大量的连接并发请求,也具有良好的稳定性
一、nginx反向代理

nginx作为一个代理服务器,至少需要两块网卡来同时连接外网和内网

网卡设置好之后就要安装nginx了,具体的安装步骤参考《linux下实现lnmp环境》中的第二步“安装nginx”,这里不再列出详细的安装过程了。安装完成之后修改/etc/nginx/nginx.conf文件

前端nginx代理的工作完成之后就要搭建后方的lamp环境了,搭建lamp环境不是这篇文章的重点,所以过程我这也不再列出来了,参考《lamp环境搭建–源码安装 》。lamp环境完成之后在Server1上新建一个默认页面。

然后用外网的一台主机访问代理服务器测试一下:

虽然实现了反向代理的功能,但不能满足大量的连接并发请求,因为在nginx接受到客户端的询问后依然是从后方的服务器中请求数据,其满足的并发连接请求量依然受apache的制约,甚至说多了一个向后查询的过程,其效率还不如没有这个代理,可以把apache装起来,用其自带的压力测试工具ab测试一下:

[root@server1 ~]# ab -c 100 -n 10000 http://172.16.10.100/test.jpg

直接向后方请求数据时可以满足的请求为每秒2241.49个

[root@server1 ~]# ab -c 100 -n 10000 http://202.196.10.123/test.jpg

而通过前端nginx反向代理服务器之后能满足的请求不增反减,这就需要nginx有本地缓存的支持了

二、反向代理+负载均衡+健康探测+缓存

由于设置缓存也是修改nginx的配置文件,所以接下来将负载均衡、健康探测和缓存放在一起做

1、反向代理+负载均衡+健康探测

由于nginx的源码包安装并不支持健康探测,所以需要给nginx的源码打上补丁之后重新配置、编译并安装

Nginx反向代理+负载均衡+健康探测+缓存

Nginx反向代理+负载均衡+健康探测+缓存

Nginx反向代理+负载均衡+健康探测+缓存

Nginx反向代理+负载均衡+健康探测+缓存

[root@server1 nginx-1.0.11]#vim /etc/nginx/nginx.conf

Nginx反向代理+负载均衡+健康探测+缓存

upstream backend /定义后方的服务器群组

Server 172.16.10.100 weight=1 /指明后方的一台服务器地址,权重设置为1

Server 172.16.10.101 weight=1 /指明后方的另一台服务器地址,权重设置为1

healthcheck_enable /开启健康探测功能

healthcheck_delay 1000 /设置健康检测的时延

healthcheck_timeout 1000 /设置健康检测的超时时间

healthcheck_failcount 1 /后方某台服务器有一次检测不到即视为宕掉

healthcheck_send “GET /.health HTTP/1.0” /使用GET方法访问后方服务器站点下的.health来进行探测

proxy_pass http://backend /与upstream backend相对应,在访问202.196.10.123或www.abc.com时将流量转发到backend组

location /stats /定义一个站点,用来查看后方服务器的健康状况

将nginx重启

在后方的两台服务器上新建两个健康探测页面".health",内容是什么都行,只要前端nginx能够成功访问这个探测页面即可

这是Server1

Nginx反向代理+负载均衡+健康探测+缓存

这是Server2

Nginx反向代理+负载均衡+健康探测+缓存

再次在外网的主机上访问202.196.10.123

Nginx反向代理+负载均衡+健康探测+缓存

Nginx反向代理+负载均衡+健康探测+缓存

可以通过访问根目录下的stats来查看后方服务器的状态

Nginx反向代理+负载均衡+健康探测+缓存

上面显示后方两台服务器都正常

关闭Server1的httpd服务

Nginx反向代理+负载均衡+健康探测+缓存

再次查看后方服务器的状态

Nginx反向代理+负载均衡+健康探测+缓存

显示后方的172.16.10.100即Server1不能正常连接

这样就实现了负载均衡和健康探测,但依然不能满足高并发量,再次用ab进行测试:

[root@server1 nginx-1.0.11]# ab -c 100 -n 10000 http://172.16.10.100/test.jpg

Nginx反向代理+负载均衡+健康探测+缓存

[root@server1 nginx-1.0.11]# ab -c 100 -n 10000 http://202.196.10.123/test.jpg

Nginx反向代理+负载均衡+健康探测+缓存

通过nginx代理可以满足的最大连接请求依然没有直接访问大

[root@server1 nginx-1.0.11]#vim /etc/nginx/nginx.conf 修改nginx的配置文件

Nginx反向代理+负载均衡+健康探测+缓存

proxy_cache_path /设置缓存的路径和其他参数。缓存数据是保存在文件中的,缓存的键和文件名都是在代理URL上执行MD5的结果。 levels参数定义了缓存的层次结构。

proxy_set_header /允许重新定义或者添加发往后端服务器的请求头。

proxy_cache /指定用于页面缓存的共享内存。

proxy_cache_valid /为不同的响应状态码设置不同的缓存时间。

proxy_cache_use_stale /指定后端服务器出现状况时,nginx可以使用的过期缓存

将nginx重启

Nginx反向代理+负载均衡+健康探测+缓存

再次进行压力测试

[root@server1 nginx-1.0.11]# ab -c 100 -n 10000 http://202.196.10.123/test.jpg

Nginx反向代理+负载均衡+健康探测+缓存

可以看到最大连接请求已经达到了5000多,这样负载均衡+健康探测+缓存已经完成

接下来一个问题就是在启用缓存之后的访问问题,试着重新访问一下该站点

Nginx反向代理+负载均衡+健康探测+缓存

可以看到再怎么刷新页面内容依然是“I am server-1”,这就证明现在访问到的是nginx缓存在本地的结果,看看缓存目录中有没有内容

Nginx反向代理+负载均衡+健康探测+缓存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值