linux下配置squid(详细配置)

1、什么是squid

Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid主要设计用于在Unix一类系统运行。

Squid的发展历史相当悠久,功能也相当完善。除了HTTP外,对于FTP与HTTPS的支援也相当好,在3.0 测试版中也支援了IPv6。

squid可以做代理也可以做缓存;

squid缓存不仅可以节省宝贵的带宽资源,也可以大大降低服务器的I/O

squid不仅可以做正向代理,又可以做反向代理。

正向代理,squid后面是客户端,客户端上网要通过Squid去上;反向代理,squid后面是服务器,服务器返回给用户数据需要走squid。

正向代理用在企业的办公环境中,员工上网需要通过squid代理来上网,这样可以节省网络带宽资源。而反向代理用来搭建网站静态项(图片、html、流媒体、js、css等)的缓存服务器,它用于网站架构中。

2、搭建squid正向代理

官方网站为 http://www.squid-cache.org/

安装命令:yum install -y squid

squid -v 查看版本以及编译参数(Squid Cache: Version 3.1.10)

> /etc/squid/squid.conf    清空配置文件;

vim /etc/squid/squid.conf

加入如下配置:

http_port 3128

visible_hostname changjiangyun

acl manager proto cache_object

acllocalhost src 127.0.0.1/32 ::1

aclto_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

acllocalnet src 10.0.0.0/8     # RFC1918possible internal network

acllocalnet src 172.16.0.0/12  # RFC1918possible internal network

acllocalnet src 192.168.0.0/16 # RFC1918 possible internal network

aclSSL_ports port 443

aclSafe_ports port 80 8080

aclSafe_ports port 21

aclSafe_ports port 443

aclCONNECT method CONNECT

http_access allow manager localhost

http_access deny manager

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localnet

http_access allow localhost

http_access allow all

cache_dir aufs /data/cache 1024 16 256

cache_mem 128 MB

hierarchy_stoplist cgi-bin ?

coredump_dir /var/spool/squid

refresh_pattern ^ftp:           1440    20%    10080

refresh_pattern ^gopher:        1440   0%      1440

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

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

refresh_pattern .               0       20%    4320

############################## 到此结束

配置解释:

acl Safe_ports port 80 8080         # http的端口

acl Safe_ports port 21          # ftp的端口

acl Safe_ports port 443         # https的端口

cache_dir aufs /data/cache 1024 16 256    #缓存空间1024M大小 16个一级目录,256个子目录

cache_mem 128 MB    #缓存可以使用的内存大小;放在内存中访问数据速度快;

mkdir /data/cache    #创建缓存目录

chown -R squid:squid /data/cache    #更改缓存目录权限

squid -z   #初始化缓存目录,squid新版本3.1可以省略

/etc/init.d/squid start    #启动squid服务

squid -k check    #可以检测配置文件是否有错;可以简写为-kche

squid -k rec    #可以重新加载配置,reconfig的简写;

service squid restart    #重启squid服务;重启经常性的很慢,可以先killall squid,在启动服务;

检测配置文件,报错:Could not determine this machines public hostname. Please configureone or set ‘visible_hostname‘.没有定义公共主机名,需要配置visible_hostname 可视化主机名;(squid出问题,会在浏览器显示squid的主机名)

在配置文件中加入:visible_hostname yonglinux 就不会报错;

[[email protected] ~]# squid -k check

2015/05/25 03:09:18| WARNING: Could notdetermine this machines public hostname. Please configure one or set‘visible_hostname‘.

2015/05/25 03:09:18| WARNING: Could notdetermine this machines public hostname. Please configure one or set‘visible_hostname‘.

squid: ERROR: No running copy

在另一台linux进行测试:curl -x192.168.22.30:3128 www.qq.com

指定代理服务器192.168.22.30的3128端口访问网站,前提保证代理服务器能访问网站;

设定代理服务器的作用是让局域网的用户访问网站速度快,另一方面可以控制用户访问哪些网站;上班期间禁止员工看视频,购物;

访问图片,测试缓存,缓存的时间,X-Cache为HIT击中,说明squid缓存起作用;第一次为MISS;

[[email protected] ~]# curl -x192.168.22.30:3128‘http://www.51cto.com/images/home/images/logo.jpg‘ -I

HTTP/1.0 200 OK

Server: Tengine

Date: Sun, 24 May 2015 13:42:43 GMT

Content-Type: image/jpeg

Content-Length: 5309

Last-Modified: Wed, 22 Jan 2014 07:55:12 GMT

Expires: Sun, 31 May 2015 13:42:43 GMT

Cache-Control: max-age=604800

Load-Balancing: web39

Accept-Ranges: bytes

Age:29661

X-Cache: HIT from yonglinux

X-Cache-Lookup: HIT from yonglinux:3128

Via:1.0 yonglinux (squid/3.1.10)

Connection: keep-alive

设置squid代理服务器只代理某几个域名

设置域名白名单,允许baidu sohu可以访问,其他都拒绝;

vim /etc/squid/squid.conf    下面的内容加入到squid配置文件acl下面;

acl http proto HTTP

acl good_domain dstdomain .baidu.com.sohu.com

http_access allow http good_domain

http_access deny http !good_domain

使用curl测试白名单,baidu、sohu返回状态码为200 OK,qq不在白名单则返回403;

[[email protected] ~]# curl -x192.168.22.30:3128www.sohu.com -I

HTTP/1.0 200 OK

Content-Type: text/html

Date: Sun, 24 May 2015 13:57:32 GMT

Server: SWS

Vary: Accept-Encoding

Cache-Control: no-transform, max-age=120

Expires: Sun, 24 May 2015 13:59:32 GMT

Last-Modified: Sun, 24 May 2015 13:57:21 GMT

X-RS: 11172604.20347654.12509576

FSS-Cache: HIT from 9861864.17726194.11198816

X-Cache: MISS from yonglinux

X-Cache-Lookup: MISS from yonglinux:3128

Via:1.0 yonglinux (squid/3.1.10)

Connection: keep-alive

[[email protected] ~]# curl -x192.168.22.30:3128www.qq.com -I

HTTP/1.0 403 Forbidden

Server: squid/3.1.10

Mime-Version: 1.0

Date: Sun, 24 May 2015 22:04:30 GMT

Content-Type: text/html

Content-Length: 3254

X-Squid-Error: ERR_ACCESS_DENIED 0

Vary: Accept-Language

Content-Language: en

X-Cache: MISS from yonglinux

X-Cache-Lookup: NONE from yonglinux:3128

Via:1.0 yonglinux (squid/3.1.10)

Connection: keep-alive

限制某些域名不能通过代理访问

设置域名黑名单,不允许访问taobao.com jd.com;其他的都允许;

vim /etc/squid/squid.conf  下面的内容加入到squid配置文件acl下面

acl http proto HTTP

acl bad_domain dstdomain .taobao.com.jd.com

http_access deny http bad_domain

使用curl测试黑名单,taobao、jd返回状态码为403,51cto不在黑名单返回200 OK;

[[email protected] ~]# curl -x192.168.22.30:3128www.taobao.com -I

HTTP/1.0 403 Forbidden

Server: squid/3.1.10

Mime-Version: 1.0

Date: Sun, 24 May 2015 21:35:22 GMT

Content-Type: text/html

Content-Length: 3266

X-Squid-Error: ERR_ACCESS_DENIED 0

Vary: Accept-Language

Content-Language: en

X-Cache: MISS from yonglinux

X-Cache-Lookup: NONE from yonglinux:3128

Via:1.0 yonglinux (squid/3.1.10)

Connection: keep-alive

[[email protected] ~]# curl -x192.168.22.30:3128www.jd.com -I

HTTP/1.0 403 Forbidden

Server: squid/3.1.10

Mime-Version: 1.0

Date: Sun, 24 May 2015 21:35:32 GMT

Content-Type: text/html

Content-Length: 3254

X-Squid-Error: ERR_ACCESS_DENIED 0

Vary: Accept-Language

Content-Language: en

X-Cache: MISS from yonglinux

X-Cache-Lookup: NONE from yonglinux:3128

Via:1.0 yonglinux (squid/3.1.10)

Connection: keep-alive

[[email protected] ~]# curl-x192.168.22.30:3128 www.51cto.com -I

HTTP/1.0 200 OK

Server: Tengine

Date: Sun, 24 May 2015 13:31:21 GMT

Content-Type: text/html

Vary: Accept-Encoding

Load-Balancing: web39

X-Cache: MISS from yonglinux

X-Cache-Lookup: MISS from yonglinux:3128

Via:1.0 yonglinux (squid/3.1.10)

Connection: keep-alive

使用IE浏览器测试,需要设置代理服务器,菜单栏——工具——Internet选项——连接——局域网设置,勾选代理服务器——高级,填写squid代理服务器地址和端口号;

时间: 2024-12-22 12:32:14

linux下配置squid(详细配置)的相关文章

linux 下代理服务squid的配置

Squid cache(简称为Squid),作为网页服务器的前置cache服务器,可以代理用户向web服务器请求数据并进行缓存,也可以用在局域网中,使局域网用户通过代理上网. linux 下squid 配置 首先安装squid yum install squid squid 服务器的配置文件主要为squid.conf 简单的代理设置如下 1.acl xx(别名,自行根据需求更改) src 192.168.157.0/24 # acl baidu        dstdomain (目的域)  

让你提前认识软件开发(51):VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改

第3部分 软件研发工作总结 VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改 [文章摘要] Pclint是一种C/C++软件代码静态分析工具.它是一种更加严格的编译器,能够发现普通编译器所不能发现的代码中的很多问题,因此被广泛应用于软件开发项目中. 本文介绍了如何在VC++集成开发环境中配置Linux下的Pclint工程,给出了C语言中pclint规则A检查的常见错误,并描述了对应的修改办法. [关键词] VC++  Pclint  配置  操作  修改 1. 前言 P

Linux下FTP虚拟账户配置

参考模版/usr/share/doc/vsftpd-2.0.5/EXAMPLE/VIRTUAL_USERS) 1.创建虚拟账户 [[email protected] ~]#yum install db4-utils [[email protected] ~]#vim /etc/vsftpd/vlogin tomcat #账户名称 123456 #密码 jerry #账户名称 654321 #密码 [[email protected] ~]#db_load -T -t hash -f /etc/v

linux 下安装 mysql 并配置 python 开发环境

1.安装 mysql ,安装过程中将提示设置 root 用户的密码,默认可以设置为 rootadmin . $ sudo apt-get install mysql-server 2.安装 mysql 开发工具(不安装时,安装 MySQL-python 提示错误 "mysql_config not found"). $ sudo apt-get install libmysqld-dev 3.安装 python 的 mysql 库 MySQL-python (首先安装 python-d

Linux下apache+php搭建配置记录

linux下apache+php搭建配置记录 第1章  环境说明 1.1 系统说明 CentOS 6.4 1.2 软件说明 httpd-2.4.2.tar.gz apr-util-1.4.1.tar.gz apr-1.4.6.tar.gz pcre-8.13.tar.gz php-5.4.3.tar.bz2 libmcrypt-2.5.8.tar.gz mhash-0.9.9.9.tar.gz 第2章  Apache搭建说明 2.1 安装依赖包 yum install make openldap

linux 下安装jdk及配置jdk环境图解

linux 下安装jdk及配置jdk环境图解 一:先检测是否已安装了JDK 执行命令: # rpm -qa|grep jdk  或   # rpm -q jdk  或  #find / -name jdk* /soft/openfire_java/jdk-7u40-linux-x64.rpm /usr/java/jdk1.7.0_15 /usr/java/jdk1.7.0_15/jre/lib/servicetag/jdk_header.png /usr/java/jdk1.7.0_15/lib

Linux 下编译并安装配置 Qt 4.53全过程

最近准备做 Nokia 的 Symbian,Maemo 下触摸屏开发.考虑到程序的跨平台可移植性,最终选择使用 Qt 开发.相对来说,国内关于 Qt 相关文档并不算很多.作者将 Linux 下编译并安装配置 Qt 全过程总结了一下,只希望可以方便更多的朋友! 1.获得源代码         src 官网下载地址:ftp://ftp.qt.nokia.com/qt/source/        2009 年 10 月 1 日发布的 qt-x11-opensource-src-4.5.3.tar.g

Linux下IP等网络配置

Linux下IP等网络配置: 我所知道一共三种方式,下面简单介绍(注意:网络配置必须”root管理员“登录才能进行配置). 一 1.首先在命令行输入[ifconfig]命令,可看到相关网络信息,其中”ethX“那块表示网卡信息,”lo“表示回路: 2.比如我电脑只有一个网卡,网卡为”eth0“,则直接输入[ifconfig eth0 10.3.43.53]命令进行配置即可,立即生效; 3.配置完后可输入[ifconfig]命令进行查看: 注意:此配置只会临时改变IP地址,重启计算机后还是会走原来

Linux下MySQL安装和配置

--Linux下MySQL安装和配置 ---------------------------2014/05/18 Linux下MySQL的配置和安装 本文的安装采用 rpm 包安装 1.首先在官网下载 http://dev.mysql.com/downloads/mysql/ MySQL-client-5.6.17-1.el6.i686.rpm MySQL-server-5.6.17-1.el6.i686.rpm 2.由于RedHat中自带了mysql-libs-5.1 会和 MySQL-ser

linux 下 VNC Server安装配置及 eclipse CDT C/C++ 开发环境搭建(我用的是阿里云服务器 ubuntu 12.04 64-bit,无图形化界面)

linux 下 VNC Server安装配置及 eclipse CDT C/C++ 开发环境搭建(我用的是阿里云服务器 ubuntu 12.04 64-bit,无图形化界面): 既然要用 eclipse 可视环境下开发,那首先要安装图形界面喽!!! 对开发者来说,个人认为 linux 选择界面优先选择顺序:Awesome(性能最好) > Xfce4 > gnome > unity-2d //////////////////////////////////////////////// 首先