博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反向代理负载均衡之APACHE
阅读量:7052 次
发布时间:2019-06-28

本文共 5336 字,大约阅读时间需要 17 分钟。

反向代理负载均衡之APACHE

一、反向代理

1.1 介绍反响代理

  反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

1.2 反向代理的工作方式

  通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。由于外部网络上的主机并不会配置并使用这个代理服务器,普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。

  反向代理方式和包过滤方式或普通代理方式并无冲突,因此可以在防火墙设备中同时使用这两种方式,其中反向代理用于外部网络访问内部网络时使用,正向代理或包过滤方式用于拒绝其他外部访问方式并提供内部网络对外部网络的访问能力。因此可以结合这些方式提供最佳的安全访问方式。

1.3 反向代理的作用

1.3.1 保护网站安全

任何来自Internet的请求都必须先经过代理服务器

 

1.3.2 配置缓存功能加速Web请求

可以缓存真实Web服务器上的某些静态资源,减轻真实Web服务器的负载压力

1.3.3 实现负载均衡

充当负载均衡服务器均衡地分发请求,平衡集群中各个服务器的负载压力

二、使用apache实现反向代理实战

2.1 环境准备:两台虚拟机

操作系统:centos7.X

1、备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repowget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo# yum install -y gcc glibc gcc-c++ make screen tree lrzsz

 

node1:

以yum的方式安装apache修改http端口为8080

# yum install -y httpd# sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf# echo 'node1' > /var/www/html/index.html [root@node2 ~]# curl http://192.168.3.200:8080/node1

 

node2:

以yum的方式安装apache修改http端口为8080

# yum install -y httpd# sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf# echo 'node2' > /var/www/html/index.html [root@node2 ~]# curl http://192.168.3.200:8080/node2

在node1上再次编译安装apache2.4.25作为反向代理服务器

# cd /usr/local/src/ && wget http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.25.tar.gz# tar zxf httpd-2.4.25.tar.gz# cd httpd-2.4.25# ./configure --prefix=/usr/local/httpd-2.4.25 --enable-so --enable-modules="all"# make && make install# ln -s /usr/local/httpd-2.4.25/ /usr/local/httpd

编辑linux-node1的apache作为反向代理的配置文件

# vim /usr/local/httpd/conf/extra/httpd-proxy.confLoadModule proxy_module modules/mod_proxy.so #proxy模块LoadModule proxy_connect_module modules/mod_proxy_connect.so #链接的模块LoadModule proxy_http_module modules/mod_proxy_http.so #给http做代理模块LoadModule proxy_balancer_module modules/mod_proxy_balancer.so #负载均衡模块LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so #算法模块,根据server的请求量LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so #算法模块,根据server流量LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so #算法模块,根据server繁忙程度LoadModule slotmem_shm_module modules/mod_slotmem_shm.so #ProxyRequests Off #如果没有对服务器采取安全措施之前,请不要开启此项
#lb集群组的名称BalancerMember http://192.168.3.140:8080 #集群组成员BalancerMember http://192.168.3.200:8080 #集群组成员
ProxyPass /demo balancer://mycluster #跳转,和lb集群组名称对应ProxyPassReverse /demo balancer://mycluster

 

在apache的主配置文件include上述配置文件,并启动apache

# vim /usr/local/httpd/conf/httpd.confInclude conf/extra/httpd-proxy.conf

 

# 写入测试文件

# echo 'node1' > /usr/local/httpd-2.4.25/htdocs/index.html/usr/local/httpd/bin/apachectl -t # 测试apache语法是否正确/usr/local/httpd/bin/apachectl -k start # 启动apache

 

通过访问代理服务器,可以看到负载均衡的效果

http://192.168.3.140:8080/demo

对apache增加一个管理,并重启

# cat /usr/local/httpd/conf/extra/httpd-proxy.confLoadModule proxy_module modules/mod_proxy.soLoadModule proxy_connect_module modules/mod_proxy_connect.soLoadModule proxy_http_module modules/mod_proxy_http.soLoadModule proxy_balancer_module modules/mod_proxy_balancer.soLoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.soLoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.soLoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.soLoadModule slotmem_shm_module modules/mod_slotmem_shm.soProxyRequests Off
BalancerMember http://192.168.3.140:8080BalancerMember http://192.168.3.200:8080
ProxyPass /demo balancer://myclusterProxyPassReverse /demo balancer://mycluster
SetHandler balancer-managerOrder Deny,AllowAllow from all

 

打开浏览器管理界面

http://192.168.3.140:8080/manager

增加虚拟主机

LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_connect_module modules/mod_proxy_connect.soLoadModule proxy_http_module modules/mod_proxy_http.soLoadModule proxy_balancer_module modules/mod_proxy_balancer.soLoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.soLoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.soLoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.soLoadModule slotmem_shm_module modules/mod_slotmem_shm.soProxyRequests Off
BalancerMember http://192.168.3.140:8080BalancerMember http://192.168.3.200:8080
ProxyPass /demo balancer://myclusterProxyPassReverse /demo balancer://mycluster
SetHandler balancer-managerOrder Deny,AllowAllow from all
ServerAdmin webmaster@chinasoft.comDocumentRoot "/opt"ServerName www.chinasoft.comServerAlias chinasoft.comErrorLog "logs/www.chinasoft.com-error_log"CustomLog "logs/www.chinasoft.com-access_log" commonProxyPass / balancer://myclusterProxyPassReverse / balancer://mycluster

 

在本地电脑的host文件加入以下内容,过后要清理掉

192.168.3.140 www.chinasoft.com

http://www.chinasoft.com

转载于:https://www.cnblogs.com/reblue520/p/6842409.html

你可能感兴趣的文章
初始JavaScript Promises之二
查看>>
IntelliJ IDEA常见问题解决办法汇总
查看>>
[LeetCode] Container With Most Water 装最多水的容器
查看>>
poj 3624 Charm Bracelet 背包DP
查看>>
用dedecms自定义表单创建简易自助预约系统
查看>>
读《了解你的学生》有感
查看>>
dedecms /member/flink_main.php SQL Injection Vul
查看>>
Dropbox Folder Sync – 让 Dropbox 同步任意文件夹
查看>>
PHP 网页爬虫
查看>>
sql字符串的拼接 (字符串和二进制,erlang的mysql驱动)
查看>>
WinSocket同时接入量的疑惑(求解...)
查看>>
终端I/O之终端窗口的大小
查看>>
《C#高级编程》学习笔记------C#中的事件和委托
查看>>
sql-mysql
查看>>
转 管线开发
查看>>
Struts2学习笔记1
查看>>
远程首次连接mysql速度慢的解决方法:skip-name-resolve取消DNS的反向解析(转)
查看>>
php栈数据结构和括号匹配算法
查看>>
Visual Studio 2013 的 Xamarin 安装教程
查看>>
Spring_Task初探(注解,XML配置)
查看>>