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,如需转载请自行联系原作者

相关文章
|
存储 缓存 NoSQL
Redis 服务器全方位介绍:从入门到核心原理
Redis是一款高性能内存键值数据库,支持字符串、哈希、列表等多种数据结构,广泛用于缓存、会话存储、排行榜及消息队列。其单线程事件循环架构保障高并发与低延迟,结合RDB和AOF持久化机制兼顾性能与数据安全。通过主从复制、哨兵及集群模式实现高可用与横向扩展,适用于现代应用的多样化场景。合理配置与优化可显著提升系统性能与稳定性。
686 0
|
5月前
|
存储 弹性计算 安全
阿里云渠道商:新手如何选择阿里云ECS实例?
阿里云ECS凭借弹性扩展、稳定可靠与安全防护,助力企业高效上云。本文系统解析实例规格选择关键因素:业务场景匹配、性能评估、成本优化、地域部署与扩展规划,结合计费模式与实际需求,提供科学选型建议,助您精准匹配资源,提升云上效能。(238字)
|
5月前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
1320 5
|
5月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
434 10
|
5月前
|
运维 安全 Ubuntu
阿里云渠道商:服务器操作系统怎么选?
阿里云提供丰富操作系统镜像,涵盖Windows与主流Linux发行版。选型需综合技术兼容性、运维成本、安全稳定等因素。推荐Alibaba Cloud Linux、Ubuntu等用于Web与容器场景,Windows Server支撑.NET应用。建议优先选用LTS版本并进行测试验证,通过标准化镜像管理提升部署效率与一致性。
|
5月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
594 8
|
5月前
|
存储 监控 安全
阿里云渠道商:云服务器价格有什么变动?
阿里云带宽与存储费用呈基础资源降价、增值服务差异化趋势。企业应结合业务特点,通过阶梯计价、智能分层、弹性带宽等策略优化成本,借助云监控与预算预警机制,实现高效、可控的云资源管理。

推荐镜像

更多
  • DNS