squid代理服务器原理解析和反向代理实例部署

简介:

一 squid简介

squid是一个支持http、https、ftp等服务的web缓存代理软件,通过缓存页面实现降低宽带占用提高页面响应时间。另外,squid提供访问控制,squid的缓存页面存放在内存和硬盘中,在选择服务器时候内存和硬盘要求高,对于数据过期更新,需要不定期的清理缓存的数据。


二 squid 代码请求流程

1 客户端访问squid代理服务器

2 代理服务器代表客户端访问后端真实服务器

3 真实服务器把数据返回给squid代理服务器

4 代理服务器把响应数据发送给客户端,并把页面缓存在本地的内存及磁盘中

5 客户端再次请求相同数据时,代理服务器直接将缓存的数据返回给客户端


三 squid代理服务类型

一般分三种类型,正向代理服务器、透明代理服务器、反向代理服务器。

正向代理:主要应用于内部网络访问外部网络时缓存页面数据,提供统一网络接口链接到外网,所有的内网客户端无需配置外网ip即可通过squid上网,在这种模式下,squid主要负责提供缓存加速及访问控制的功能。代理结构如下图

wKioL1iW0uLyBfPzAAGOxk5_Pdc909.png

透明代理:与正向代理类似,不需要终端用户进行特殊设置,需要结合网关部署,所有操作均由管理员在网关服务器和代理服务器进行设置,这些对于用户透明的。代理结构如下图

wKioL1iW14-ykUUIAAGYNHhFoYE983.png

反向代理:反向代理结合智能DNS可以实现基本的CDN框架,此时的squid代理服务器可以直接代表后端真实服务器提供页面访问,用户并感觉不到自己是在访问代理服务器,有利于减轻真实服务器压力,提高并发和响应速度。

wKioL1iW3zKCpJxeAAFr72v5o-I165.png

四 配置文件解析

使用yum安装squid时,默认的配置文件是/etc/squid/squid.conf. 下表给出详细解读

配置选项               具体描述
http_port 设置监听的网络端口,默认是3128
cache_dir

设置缓存位置及大小,可以使用多个cache_dir设置多个存储位置

cache_dir ufs /home/data/squid/cache 100 16 256

100代表百兆存储容量,16及256代表子目录个数

access_log 设置日志路径和格式,access_log /var/log/squid/access.log combined
acl 定义控制访问列表对象,可以控制原地址端口时间
http_access

访问控制,允许使用acl定义localnat

http_access allow localnat

visible_hostname 设置主机名,默认squid将默认检测主机名
cache_peer

用来设置可以连接的其他代理服务器

格式:cache_peer hostname type http-port icp-port[option]

hostname为其他代理机器的主机名或ip

type类型可为parent sibling multicast

http_port指定端口号

icp-port指定ICP端口号

option选项可选值如下:

 proxy-only实现不缓存邻居的任何响应

 weight=n设置服务器权重

 ttl=n此值对广播邻居有效

 rounf-robin设置轮询

 max-conn=n设置链接邻居cache的并发量

 originserver设置邻居为源真是服务器,做反向代理使用


五 实例squid反向代理

squid一般缓存静态页面,网页、图片、歌曲,默认不缓存CGI脚本。

服务器名称 网络配置
squid.test.com eth0:10.10.10.10
eth1:192.168.1.2
web1.test.com eth0:192.168.1.3
web2.test.com eth0:192.168.1.4

1 代理服务器squid设置
首先配置网络环境

网卡eth0

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

IPADDR=10.10.10.10

NETMASK=255.0.0.0

ONBOOT=yes

TYPE=Ethernet

网卡eth1

vim /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

BOOTPROTO=static

IPADDR=192.168.1.2

NETMASK=255.255.255.0

ONBOOT=yes

TYPE=Ethernet

执行 service network restart

安装squid代理服务并修改配置文件

yum install -y squid

vim /etc/squid/squid.conf

acl manager proto cache_object    #定义缓存管理ACL

acl localhost src 127.0.0.1/32 ::1    #定义源地址为本地回环地址的ACL

acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1    #定义目标地址的ACL

acl localnet src 10.0.0.0/8    #定义源地址为10.0.0.0/8的ACL

acl localnet src 172.16.0.0/12    #定义源地址ACL

acl localnet src 192.168.0.0/16

acl localnet src fc00::/7

acl localnet src fe80::/10

acl SSL_ports port 443        #定义安全端口为443的ACL

acl Safe_ports port 80        #定义安全端口为80的ACL

acl Safe_ports port 21        #定义安全端口为21的ACL

acl Safe_ports port 443

acl Safe_ports port 70

acl Safe_ports port 210

acl Safe_ports port 1025-65535

acl Safe_ports port 280

acl Safe_ports port 488

acl Safe_ports port 591

acl Safe_ports port 777

acl CONNECT method  CONNECT        #定义连接方式为CONNECT的ACL

http_access allow manager localhost        #仅允许本机主机进行缓存管理

http_access deny manager                    #拒绝其他主机的所有缓存管理

#拒绝所有非Safe_ports的链接

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localnet

http_access allow localhost

http_access allow all

visible_hostname squid.test.com        #设置主机名

cache_mem 2048 MB                            #内存缓存总容量   

maximum_object_size_in_memory 4096KB        #内存缓存单个文件最大4M

maximum_object_size 4096KB                        #磁盘缓存单个文件最大4M

cache_dir ufs /var/spool/squid 800 16 256    #硬盘缓存目录 最大800M 16个一级目录 256个二级目录

error_directory /usr/share/squid/errors/zh-cn    #定义报错文件的存放目录

cache_log /var/log/squid/cache.log                    #缓存日志文件

cahce_mgr admin@test.com                                #管理员邮箱

http_port 80    accel    vhost

http_port 3128

##no-query表示禁止使用ICP对源服务器进行查询

##设置ICP端口为0

##round-robin可以让代理轮询多台源服务器

##weight=n指定源服务器权重

##name用来设置服务器的唯一名称,代理转发数据到相同主机的不同端口非常有用

##originserver模拟本机服务器为源服务器

cache_peer 192.168.1.3 parent 80 0 no-query originserver round-robin name=server1

cache_peer 192.168.1.4 parent 80 0 no-query originserver round-robin name=server1

hierarchy_stoplist cgi-bin ?    #禁止缓存CGI脚本

##refresh_pattern 检查数据是否过期 min max 是最小最大分钟 -i是不区分大小写

##格式:refresh_pattern [-i] regexp min percent max [option]

refresh_pattern ^ftp:        1440        20%    10080

refresh_pattern ^gopher  1440        0%    1440

refresh_pattern -i (/cgi-bin/|\?)    0    0%    0

refresh_pattern .        0        20%    4320


执行service iptables stop

service squid start

chkconfig squid on


2 两台web服务器设置

设置web1网络参数

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

IPADDR=192.168.1.3

NETMASK=255.255.255.0

ONBOOT=yes

TYPE=Ethernet

service network restart

service iptables stop

chkconfig iptables off

yum install -y httpd

echo "web1 192.168.1.3" > /var/www/html/index.html

service httpd start

chkconfig httpd on

web2上同样执行上面步骤,注意修改部分参数


3 客户端验证

浏览器访问代理服务器,http://10.10.10.10 多次刷新后会得到轮询的不同网页 

















本文转自super李导51CTO博客,原文链接: http://blog.51cto.com/superleedo/1895100,如需转载请自行联系原作者

相关文章
|
1天前
|
Web App开发 开发框架 前端开发
Open UI5 前端开发框架配套的 Mock Server 工作原理解析
Open UI5 前端开发框架配套的 Mock Server 工作原理解析
10 0
|
1天前
|
存储 Java Go
Go 语言切片如何扩容?(全面解析原理和过程)
Go 语言切片如何扩容?(全面解析原理和过程)
12 2
|
2天前
|
负载均衡 Go 调度
使用Go语言构建高性能的Web服务器:协程与Channel的深度解析
在追求高性能Web服务的今天,Go语言以其强大的并发性能和简洁的语法赢得了开发者的青睐。本文将深入探讨Go语言在构建高性能Web服务器方面的应用,特别是协程(goroutine)和通道(channel)这两个核心概念。我们将通过示例代码,展示如何利用协程处理并发请求,并通过通道实现协程间的通信和同步,从而构建出高效、稳定的Web服务器。
|
2天前
|
存储 弹性计算 安全
阿里云服务器计算型c8i实例最新收费标准与性能介绍
阿里云ECS计算型c8i服务器采用阿里云全新CIPU架构,可提供稳定的算力输出、更强劲的I/O引擎以及芯片级的安全加固。ECS计算型c8i实例支持开启或关闭超线程配置,单台c8i实例最高支持100万IOPS。阿里云ECS计算型c8i实例CPU采用Intel®Xeon®Emerald Rapids或者Intel®Xeon®Sapphire Rapids,主频不低于2.7 GHz,全核睿频3.2GHz。本文为大家介绍计算型c8i实例最新收费标准及性能。
阿里云服务器计算型c8i实例最新收费标准与性能介绍
|
2天前
|
网络协议 Linux Windows
DHCP服务器原理
DHCP服务器原理
8 0
|
2天前
|
图形学
R语言其他相关函数(各函数解析含实例,可供查询)
R语言其他相关函数(各函数解析含实例,可供查询)
3 0
|
2天前
|
监控 安全 Cloud Native
【云原生之Docker实战】使用Docker部署Ward服务器监控工具
【5月更文挑战第11天】使用Docker部署Ward服务器监控工具
17 3
|
2天前
|
机器学习/深度学习 存储 算法
卷积神经网络(CNN)的数学原理解析
卷积神经网络(CNN)的数学原理解析
33 1
卷积神经网络(CNN)的数学原理解析
|
2天前
|
传感器 数据采集 存储
岩土工程监测仪器之一:振弦采集仪的工作原理解析
岩土工程监测仪器之一:振弦采集仪的工作原理解析
岩土工程监测仪器之一:振弦采集仪的工作原理解析
|
2天前
|
存储 编解码 安全
阿里云服务器计算型、通用型、内存型主要实例性能及选择参考
在阿里云的活动中,属于计算型实例规格的云服务器主要有计算型c7、计算型c7a、计算型c8a、计算型c8y、计算型c8i这几个实例规格,属于通用型实例规格的云服务器有通用型g7、通用型g7a、通用型g8a、通用型g8y、通用型g8i,属于内存型实例规格的云服务器有内存型r7、内存型r8a、内存型r8y、内存型r8i等实例。不同实例规格的云服务器在架构、计算、存储、网络、安全等方面有着不同,因此,其适用场景也有所不同。本文来详细介绍一下阿里云服务器计算型、通用型、内存型主要实例计算、存储等性能及其适用场景,以供参考。
阿里云服务器计算型、通用型、内存型主要实例性能及选择参考

推荐镜像

更多