Squid是比较知名的代理软件,它不仅可以跑在linux上还可以跑在windows以及Unix上,它的技术已经非常成熟。目前使用Squid的用户也是十分广泛的。Squid与Linux下其它的代理软件如Apache、Socks、TISFWTK和delegate相比,下载安装简单,配置简单灵活,支持缓存和多种协议。
Squid之所以用的很多,是因为它的缓存功能,Squid缓存不仅可以节省宝贵的带宽资源,也可以大大降低服务器的I/O. 从经济角度考虑,它是很多网站架构中不可或缺的角色。
Squid不仅可以做正向代理,又可以做反向代理。当作为正向代理时,Squid后面是客户端,客户端想上网不管什么网都得经过Squid. 当一个用户(客户端)想要请求一个主页时,它向Squid发出一个申请,要Squid替它请求,然后Squid 连接用户要请求的网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户请求同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。使用正向代理时,客户端需要做一些设置,才能实现,也就是平时我们在IE选项中设置的那个代理。而反向代理是,Squid后面为某个站点的服务器,客户端请求该站点时,会先把请求发送到Squid上,然后Squid去处理用户的请求动作。正向代理,Squid后面是客户端,客户端上网要通过Squid去上;反向代理,Squid后面是服务器,服务器返回给用户数据需要走Squid.


1、安装squid。

yum �y install squid #yum源自带版本为3.3.8。

或者在官网上下载稳定版,编译安装(http://www.squid-cache.org)

cd /usr/local/src

wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.21.tar.gz

cd squid-3.5.21

./configure --prefix=/usr/local/squid \
--disable-dependency-tracking \
--enable-dlmalloc \
--enable-gnuregex \
--disable-carp \
--enable-async-io=240 \
--with-pthreads \
--enable-storeio=ufs,aufs,diskd,null \
--disable-wccp \
--disable-wccpv2 \
--enable-kill-parent-hack \
--enable-cachemgr-hostname=localhost \
--enable-default-err-language=Simplify_Chinese \
--with-build-environment=POSIX_V6_ILP32_OFFBIG \
--with-maxfd=65535 \
--with-aio \
--disable-poll \
--enable-epoll \
--enable-linux-netfilter \
--enable-large-cache-files \
--disable-ident-lookups \
--enable-default-hostsfile=/etc/hosts \
--with-dl \
--with-large-files \
--enable-removal-policies=heap,lru \
--enable-delay-pools \
--enable-snmp \
--disable-internal-dns

make &&make install

安装完成后,查询版本及安装参数

squid �v

+----------------------------squid命令参数-------------------------------------------+

[root@localhost squid]# squid -h
Usage: squid [-cdhvzCFNRVYX] [-s | -l facility] [-f config-file] [-[au] port] [-k signal]
-a port Specify HTTP port number (default: 3128).
-d level Write debugging to stderr also.
-f file Use given config-file instead of
/etc/squid/squid.conf
-h Print help message.
-k reconfigure|rotate|shutdown|interrupt|kill|debug|check|parse
Parse configuration file,then send signal to
running copy (except -k parse) and exit.
-s | -l facility
Enable logging to syslog.
-u port Specify ICP port number (default: 3130),disable with 0.
-v Print version.
-z Create missing swap directories and then exit.
-C Do not catch fatal signals.
-D OBSOLETE. Scheduled for removal.
-F Don't serve any requests until store is rebuilt.
-N No daemon mode.
-R Do not set REUSEADDR on port.
-S Double-check swap during rebuild.
-X Force full debugging.
-Y Only return UDP_HIT or UDP_MISS_NOFETCH during fast reload.

常用命令的简写:

squid �kche #检测是否有语法错误

squid �krec #重新加载配置文件

+----------------------------squid命令参数-------------------------------------------+


2、修改配置文件

vim /etc/squid/squid.conf

把以下修改

http_port 3128 #缓冲时用的端口号,反射代理时改为80或8080,正常代理,默认为3128,可以自己改动下。

http_access allow all

cache_dir ufs /var/spool/squid 256 16 25 #指定本地磁盘上的缓存目录,后边的1024为大小,单位是M

cache_mem 128 MB #用来规定缓存占用内存的大小,具体也需要根据您机器的内存定
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid

refresh_pattern \.(jpg|png|gif|mp3|xml) 1440 50% 2880 ignore-reload

配置文件保存好后,可以检测下是否有语法错误:

squid �kcheck


+----------------------------squid.confs配置-------------------------------------------+


如果只想代理某几个域名,则在squid.conf中找到:
acl CONNECT method CONNECT
在其下面添加四行:
acl http proto HTTP
acl good_domain dstdomain .baidu.com .sina.com #这里的. 表示万能匹配,前面可以是任何字符,这里只填写允许的域名。

http_access allow http good_domain
http_access deny http !good_domai

如果要设置黑名单,同样在squid.conf中找到:
acl CONNECT method CONNECT
在其下面添加四行:
acl http proto HTTP
acl bad_domain dstdomain .sina.com .souhu.com #拒绝的域名名单
http_access allow http !bad_domain
http_access deny http bad_domain

+----------------------------squid.confs配置-------------------------------------------+

注意:/var/spool/squid目录需要使用命令授权:

chown -R squid:squid /var/spool/squid

如果是用yum安装的则在安装时已经完成了此不聚,此处不用处理。

在第一次启动之前或者修改了cache路径之后,需要重新初始化cache目录,如下命令:

squid �z

3、启动服务

systemctlstartsquid
如果需要开机自动启动:systemctlenablesquid

查看squid是否启动:

ps aux |grep squid

查找端口监听情况:

netstat �nat

4、正向代理测试

a)在本机上使用curl命令测试

curl -xlocalhost:3128 http://www.baidu.com/

如果看到了一大串,说明squid正向代理设置ok。

b)浏览器中配置

  • 在windows中:

Internet选项 -> 连接 -> 局域网连接 -> 代理服务器

  • 在macOSX中:

Safari -> 偏好设置 -> 代理 -> Web代理

然后输入你的代理地址和端口,就可以正常工作了。

5、搭建squid反向代理

反向代理只需要在squid.conf配置文件中一个地方改动一下:

http_port 3128
改为:
http_port 80 accel vhost vport
然后再增加要代理的后端真实服务器信息:
cache_peer 123.125.119.147 parent 80 0 originserver name=a
cache_peer 61.135.169.125 parent 80 0 originserver name=b
cache_peer_domain a www.qq.com #以网上的服务器来测试
cache_peer_domain b www.baidu.com#以网上的服务器来测试

其中cache_peer为配置后端的服务器ip以及端口,name后边为要配置的域名,这里和后面的cache_peer_domain相对应。实际的应用中,ip大多为内网ip,而域名也许会有多个,如果是squid要代理一台web上的所有域名,那么就写成这样:

cache_peer 192.168.10.111 80 0 originserver
后面连cache_peer_domain 也省了。

修改了配置文件后需要重启一下squid:

systemctl restart squid

CentOS7.2 安装Squid3.5及正、反向代理设置的更多相关文章

  1. node实现简单的反向代理服务器

    本篇文章主要介绍了node实现简单的反向代理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. vue中的proxyTable反向代理(亲测有用)

    这篇文章主要介绍了vue中的proxyTable反向代理(亲测有用),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. Angular4 反向代理Details实践

    本篇文章主要介绍了Angular4 反向代理Details实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  4. JS跨域解决方案react配置反向代理

    这篇文章主要为大家介绍了JS跨域解决方案react配置反向代理的示例内容详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步

  5. 利用node.js实现反向代理的方法详解

    在实际工程开发中,会有前后端分离的需求。为了平滑的完成前端请求到后端各个独立服务,需要一个中间件实现请求转发的功能,利用Nginx可以实现,在这里使用nodejs实现一个反向代理服务器。本文主要介绍了关于利用node.js实现反向代理的相关资料,需要的朋友可以参考下。

  6. 抛弃Nginx使用nodejs做反向代理服务器

    每当提起反向代理器,人们通常一想到的就是 Nginx,但是今天我们暂时忽略大名鼎鼎的 Nginx,采用同样也是使用单线程、事件循环的服务端小弟——Nodejs 来达成。

  7. PHP使用Nginx实现反向代理

    这篇文章主要为大家详细介绍了PHP使用Nginx实现反向代理的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  8. vue-cil之axios的二次封装与proxy反向代理使用说明

    这篇文章主要介绍了vue-cil之axios的二次封装与proxy反向代理使用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  9. 详解用node.js实现简单的反向代理

    本篇文章主要介绍了详解用node.js实现简单的反向代理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. 使用Nginx 反向代理来避免 ajax 跨域请求的方法

    这篇文章主要介绍了使用Nginx 反向代理来避免 ajax 跨域请求的方法的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部