什么是代理,代理是一个非常常用的概念,比如某个国外的游戏被国内某个公司代理,我们就可以通过国内公司的服务器进行游戏了。代理和这个有些类似,就是代替客户端或者服务端进行工作的作用。
代理分为正向代理和反向代理。
正向代理:
正向代理是常规的代理,为了减少避免用户直接访问服务器,造成服务器压力过大,内网用户要通过代理服务器才能访问外网。
过程:用户向代理服务器发出请求,代理服务器会先查看自身的缓存,如果缓存中有用户请求的内容,就直接将这个数据内容发给用户,就不向外网服务器请求了。如果代理服务器内部缓存没有用户的请求内容,那么代理服务器会代替用户向外部服务器发送请求进行访问,获得外部服务器的响应后自身留一份缓存再将内容发给用户。这样下一次有用户请求相同的内容时,也不需要请求外部服务器了。
原理:内网用户将请求发给代理服务器,代理服务器根据用户需求,向真正的web服务器发出请求,然后获取到网页内容之后,在本地缓存然后发给用户。
缺点:用户要在浏览器进行手动的代理配置,添加代理服务器地址和端口信息。
透明代理:
目的和原理与正向代理服务器一致,差别在于用户不需要再对浏览器进行设置。
但是服务器端需要配置iptables。
反向代理:
反向代理是外部的客户请求要通过代理服务器才能访问内部服务器,将服务器内部化的操作。
原理:外网服务器(客户端)访问正常的域名或者IP,其实访问的是代理服务器,代理服务器帮助客户端请求页面,在代理服务器上缓存,然后再发送给客户端。
反向代理服务器一般用于给网站加速。
如何实现:
一、环境搭建。
3台主机,一台做客户机,一台做的代理服务器,一台做web服务器,代理服务器要有2个网卡,并且配置好网段。
二、配置思路
1、安装软件。
2、编写配置文件,设置各个属性。
3、配置客户端的浏览器,并测试。
三、具体操作
1 安装Apache
# yum -y install httpd
2 启动Apache并加入开机启动
# systemctl restart httpd
# systemctl enable httpd
3 创建index.html
# echo "hello world proxy
" > /var/www/html/index.html
代理服务器
[root@localhost network-scripts]# yum install squid -y
perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 perl-Socket.x86_64 0:2.010-4.el7
perl-Storable.x86_64 0:2.45-3.el7 perl-Text-ParseWords.noarch 0:3.29-4.el7
perl-Time-HiRes.x86_64 4:1.9725-3.el7 perl-Time-Local.noarch 0:1.2300-2.el7
perl-constant.noarch 0:1.27-2.el7 perl-libs.x86_64 4:5.16.3-292.el7
perl-macros.x86_64 4:5.16.3-292.el7 perl-parent.noarch 1:0.225-244.el7
perl-podlators.noarch 0:2.5.1-3.el7 perl-threads.x86_64 0:1.87-4.el7
perl-threads-shared.x86_64 0:1.43-6.el7 squid-migration-script.x86_64 7:3.5.20-10.el7
Complete!
配置文件要改这几项:
我的本地IP是172.16.0.0/16 这个要改成这个
acl localnet src 172.16.0.0/16 # RFC1918 possible internal network
这个是创建缓存文件的目录可以改,但是默认也有 把他的注释取消
cache_dir ufs /var/spool/squid 100 16 256
缓存文件大小,这个太小了不过我的话演示用太大没啥意义。
cache_mem 64 MB
初始化代理服务器,并启动代理服务。
[root@localhost network-scripts]# squid -z
[root@localhost network-scripts]# 2019/10/31 19:01:03 kid1| Set Current Directory to /var/spool/squid
2019/10/31 19:01:03 kid1| Creating missing swap directories
2019/10/31 19:01:03 kid1| /var/spool/squid exists
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/00
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/01
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/02
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/03
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/04
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/05
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/06
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/07
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/08
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/09
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/0A
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/0B
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/0C
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/0D
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/0E
2019/10/31 19:01:03 kid1| Making directories in /var/spool/squid/0F
[root@localhost network-scripts]# systemctl start squid
确定代理服务器能够访问
[root@localhost network-scripts]# curl http://221.122.126.11
hello world proxy
浏览器设置手动代理,端口选择3128端口
ping web服务器不能通。但是浏览器能够访问到内容。
透明代理:
透明代理和正向代理一样,就是不用用户在浏览器进行手动添加代理服务器了。
配置思路:
1、在配置文件中端口的后边加入 transparent 透明的。
2、安装iptables软件配置防火墙信息。
3、取消浏览器中手动添加的代理内容。
4、测试
http_port 3128 transparent
[root@localhost network-scripts]# yum install iptables-services
安装iptables
[root@localhost network-scripts]# yum install iptables-services
[root@localhost network-scripts]# iptables -F
[root@localhost network-scripts]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
[root@localhost network-scripts]# iptables -t nat -I PREROUTING -i ens33 -s 172.16.0.0/16 -p tcp --dport 80 -j REDIRECT --to-port 3128
[root@localhost network-scripts]# iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
[root@localhost network-scripts]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- 172.16.0.0/16 anywhere tcp dpt:http redir ports 3128
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
代理服务器测试能否访问
[root@localhost network-scripts]# curl http://221.122.126.11
hello world proxy
hello world touming
配置思路:
1、安装软件squid
2、编写配置文件
3、测试
反向代理是主配置文件要有这几项
221那个ip是web服务器的地址,后边是域名
http_port 80 accel vhost
cache_peer 221.122.126.11 parent 80 0 originserver name=kkk
cache_peer_domain kkk www.ggsc.com
代理服务器测试并能否访问
[root@localhost network-scripts]# curl http://www.ggsc.com
hello world proxy
hello world touming
hello world fanxiang
能够访问