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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

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

相关文章
|
25天前
|
存储 Java 计算机视觉
Java二维数组的使用技巧与实例解析
本文详细介绍了Java中二维数组的使用方法
42 15
|
3天前
|
机器学习/深度学习 算法 数据挖掘
解析静态代理IP改善游戏体验的原理
静态代理IP通过提高网络稳定性和降低延迟,优化游戏体验。具体表现在加快游戏网络速度、实时玩家数据分析、优化游戏设计、简化更新流程、维护网络稳定性、提高连接可靠性、支持地区特性及提升访问速度等方面,确保更流畅、高效的游戏体验。
47 22
解析静态代理IP改善游戏体验的原理
|
23天前
|
存储 运维 资源调度
阿里云服务器经济型e实例解析:性能、稳定性与兼顾成本
阿里云经济型e云服务器以其高性价比、稳定可靠的性能以及灵活多样的配置选项,成为了众多企业在搭建官网时的首选。那么,阿里云经济型e云服务器究竟怎么样?它是否能够满足企业官网的搭建需求?本文将从性能表现、稳定性与可靠性、成本考虑等多个方面对阿里云经济型e云服务器进行深入剖析,以供大家参考选择。
101 37
|
2天前
|
存储 人工智能 并行计算
2025年阿里云弹性裸金属服务器架构解析与资源配置方案
🚀 核心特性与技术创新:提供100%物理机性能输出,支持NVIDIA A100/V100 GPU直通,无虚拟化层损耗。网络与存储优化,400万PPS吞吐量,ESSD云盘IOPS达100万,RDMA延迟<5μs。全球部署覆盖华北、华东、华南及海外节点,支持跨地域负载均衡。典型应用场景包括AI训练、科学计算等,支持分布式训练和并行计算框架。弹性裸金属服务器+OSS存储+高速网络综合部署,满足高性能计算需求。
|
24天前
|
存储 人工智能 安全
阿里云服务器五代、六代、七代、八代实例简介及性能提升介绍参考
随着技术的不断进步,阿里云服务器实例也经历了多代升级,从五代实例到最新的八代实例,每一代都在性能、稳定性、能效比等方面取得了显著提升。有的用户由于是初次接触阿里云服务器,所以不是很清楚阿里云服务器五代、六代、七代、八代实例有哪些,它们各自在云服务器性能上有哪些提升。本文将详细介绍阿里云服务器五代、六代、七代、八代实例的特点及性能提升,以供了解及选择。
阿里云服务器五代、六代、七代、八代实例简介及性能提升介绍参考
|
3天前
|
弹性计算 运维 网络安全
阿里云轻量应用服务器产品解析与搭建个人博客网站教程参考
轻量应用服务器(Simple Application Server)作为阿里云面向单机应用场景推出的云服务器产品,以其一键部署、一站式管理、高性价比等特性,深受个人开发者、中小企业及入门级用户的喜爱。本文将全面解析阿里云轻量应用服务器的产品优势、应用场景、使用须知,以及使用轻量应用服务器搭建个人博客网站的详细教程,帮助用户更好地了解和使用这一产品。
|
18天前
|
存储 弹性计算 数据挖掘
阿里云服务器ECS通用算力型u1和ECS经济型e实例性能特点、使用及常见问题解答FAQ
阿里云ECS云服务器的经济型e实例和通用算力型u1实例深受开发者和中小企业青睐。e实例适合中小型网站、开发测试等轻量级应用,采用共享CPU调度模式,性价比高;u1实例则适用于中小型企业级应用,提供更高的性能保障和稳定性,支持固定CPU调度模式,计算性能更稳定。同等配置下,u1实例在网络带宽、IOPS等方面表现更优,价格也相对较高。个人用户可选择e实例,中小企业建议选择u1实例以确保业务稳定性。
|
23天前
|
安全 网络协议 网络安全
解析HTTP代理服务器不稳定致使掉线的关键原因
随着数字化发展,网络安全和隐私保护成为核心需求。HTTP代理服务器掉线原因主要包括:1. 网络问题,如本地网络不稳定、路由复杂;2. 服务器质量差、IP资源不稳定;3. 用户配置错误、超时或请求频率异常;4. IP失效或协议不兼容。这些问题会影响连接稳定性。
56 8
|
3天前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
1月前
|
弹性计算 数据挖掘 应用服务中间件
阿里云轻量应用服务器68元与云服务器99元和199元区别及选择参考
目前阿里云有三款特惠云服务器,第一款轻量云服务器2核2G68元一年,第二款经济型云服务器2核2G3M带宽99元1年,第三款通用算力型2核4G5M带宽199元一年。有的新手用户并不是很清楚他们之间的区别,因此不知道如何选择。本文来介绍一下它们之间的区别以及选择参考。
497 87

热门文章

最新文章

推荐镜像

更多