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、启动服务

systemctl start squid
如果需要开机自动启动:systemctl enable squid

查看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

转载于:https://blog.51cto.com/newthink/1858644

CentOS7.2 安装Squid3.5及正、反向代理设置相关推荐

  1. 如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理

    如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理 Nginx 是一款自由开源的 HTTP 和反向代理服务器,也可以用作 POP3/IMAP 的邮件代理服务器.Ngi ...

  2. Ubuntu下Apache反向代理设置

    Apache可通过mod_proxy*.so系列模块很好的实现正向.反向代理功能,亦可通过反向代理实现负载均衡,本文将讲述基于Apache反向代理实现负载均衡的配置方法. 1.环境配置说明: 代理服务 ...

  3. Jenkins 管理界面里提示“反向代理设置有误“的问题解决办法

    Jenkins 管理界面出现了反向代理设置有误的错误. 后来发现是因为 Configure System 里的 Jenkins URL 地址设置的和访问地址不一致所致. 我们把这两个地址设置一致就好了 ...

  4. docker启动nginx代理不上_Docker nginx 反向代理设置

    文章目录 [隐藏] 缘起 方案一 方案二 延伸 缘起 最近在公司搭建了一个基于 Gogs 的代码管理系统,以及基于 Kanboard 的任务管理系统等几个内部系统.由于部署在同一台机器上,基于不同的端 ...

  5. (转)Nginx反向代理设置 从80端口转向其他端口

    from :http://www.cnblogs.com/wuyou/p/3455381.html Nginx反向代理设置 从80端口转向其他端口 反向代理(Reverse Proxy)方式是指以代理 ...

  6. 宝塔反向代理设置的一些坑

    在对宝塔的反向代理设置前,先读下这篇文章: Nginx常用反向代理配置规则_JunyouYH的博客-CSDN博客_nginx反向代理规则 然后我说下目标: www.doman.com/api/ 在宝塔 ...

  7. IIS安装ARR(Application Request Router)反向代理插件

    最近接管了一个ASP的项目.前后台两个站点.每次后台站点上传图片,都是手动将图片拷贝到前台站点服务器的方式来实现的.美其名曰,图片审核,呵呵. 我的想法是在前端服务器上配置反向代理.避免每次都需要手动 ...

  8. Go语言正/反向代理的姿势

    先重温一下什么叫反向代理,正向代理. 鹅厂二面,nginx回忆录[1] 所谓正向,反向代理取决于代理的是出站请求,还是入站请求. 正向代理:代理的出站请求, 客户端能感知到代理程序,架构上距离客户端更 ...

  9. apache https反向代理设置方案

    首先介绍一下何为反向代理: 一.反向代理的概念 反向代理也就是通常所说的WEB服务器加速,它是一种通过在繁忙的WEB服务器和Internet之间增加一个高速的WEB缓冲服务器(即:WEB反向代理服务器 ...

最新文章

  1. 有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别
  2. ​用c语言打印自定义的乘法口诀表。例如:输入9,输出9*9口诀表,输入12,输出12*12的乘法口诀表。...
  3. 如何评价个人在软件开发团队中的绩效
  4. php 安全基础 附录 A. 配置选项
  5. Bruce' Tool 4 - autoruns
  6. js中sort()方法的用法,参数以及排序原理
  7. 高级商务办公软件应用【1】
  8. Python基础笔记(手写版)
  9. 项目:艺龙国内机票实时数据爬虫
  10. 注册Github账号
  11. excel数据导入mysql
  12. 【鸡啄米】VC++串口通信编程详解
  13. 2020高交会第二十二届中国国际高新技术成果交易会
  14. 为FireFox增加自定义搜索引擎
  15. a job is a job
  16. Apollo在有赞的实践
  17. mysql按日、月、周、季度分组
  18. HackerRank python练习——Sherlock and Squares
  19. linux 系统日志 oom,Linux进程被杀掉(OOM killer),查看系统日志
  20. Android 圆圈进度

热门文章

  1. 为什么要叫python-为什么要学 Python?
  2. python发明者叫什么-python是怎么被发明的
  3. UVa11389 The Bus Driver Problem(贪心)
  4. 关于while read line使用read -p失效问题
  5. Silverlight调用的JS方法返回对象数组的处理方法
  6. 编写规范--Web前端开发修炼之道
  7. 数值格式化,每隔三位加一个逗号
  8. 如何养成一个习惯(持续更新)
  9. java集合类学习笔记之LinkedHashMap
  10. 设A和B是两个按元素值递增有序的单链表,写一算法将A和B归并为按按元素值递减有序的单链表C,试分析算法的时间复杂度。(利用上篇带有头结点的线性链表操作)...