更改squid错误页面时间不对的问题
解压源码包,进入此路径/usr/local/squid/share/errors/zh-cn(需要更改该目录下的所有文件find -type f |xargs sed -i 's#%T#%t#g'),编辑ERR_ACCESS_DENIED文件

Squid命令常用参数
/usr/local/squid/sbin/squid                            #启动squid
/usr/local/squid/sbin/squid -k shutdown       #停止squid
/usr/local/squid/sbin/squid -z                       #初始化缓存空间
/usr/local/squid/sbin/squid -k reconfigure    #重新载入配置文件
/usr/local/squid/sbin/squid -k rotate            #轮循日志
/usr/local/squid/sbin/squid -k parse            #检查语法

Squid的ACL元素,语法定义规则
acl aclname Acl_Type “string”|“file”
Acl_Type为关键字,可以是(src、dst、proto、port、srcdomain、dstdomain、url_regex、urlpath_regex、maxconn、method、time)

Acl_Type 说明:
src:源地址
dst:目的地址
proto:协议
port:端口号
srcdomain:客户端域名
dstdomain:服务器域名
url_regex:URL规则表达式匹配
Urlpath_regex:URL-path 略去协议和主机名的URL规则表达式匹配
Proxy_auth:通过外部程序进行用户认证
maxconn:单个IP最大连接数
method:指定HTTP请求方法
time:匹配时间,语法:[星期][时间段]
星期:使用关键字M,T,W,H,F,A,S(关键字顺序依次为星期一,二,三,四,五,六,日)
时间段:可以表示为10:00-20:00
实例:
(1) src:源地址。定义如下:
acl aclname src 10.47.39.0/24 #网络地址
acl:aclname src 10.47.39.16-10.47.39.17/32 #地址范围
(2)dst:目标地址
acl aclname dst 123.127.155.162/32
(3)srcdomain:客户所属的域
acl aclname srcdomain foo.com
(4)dstdomain:请求服务器所属的域
acl aclname dstdomain baidu.com
(5)time:访问时间
acl aclname time [day-abbrevs] [h1:m1-h2:m2]-[hh:mm-hh:mm]
M:指代Monday;T:指代Tuesday;W:指代Wednesday;H:指代Thursday;F:指代Friday;A:指代Saturday;S:指代Sunday
(6)port:访问端口。可以指定多个端口
acl aclname port 80 70 21
acl aclname port 0-1024 #指定一个端口范围
(7)proto:使用协议
acl aclname proto HTTP FTP
(8)method:请求方法
acl aclname method GET POST
(9)url_regex:URL规则表达式匹配
acl aclname url_regex[-i] pattern
(10)urlpath_regex:URL-path规则表达式匹配
acl aclname urlpath_regex[-i] pattern

Squid配置文件参考
[root@web01 ~]# cat /usr/local/squid/etc/squid.conf  #主配置文件
include /usr/local/squid/etc/conf.d/client_ip.conf
include /usr/local/squid/etc/conf.d/dst_ip.conf
include /usr/local/squid/etc/conf.d/port.conf
include /usr/local/squid/etc/conf.d/domain.conf
include /usr/local/squid/etc/conf.d/http_access.conf
http_access deny all
http_port 10.47.39.8:3128
coredump_dir /usr/local/squid/var/cache/squid
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
cache_mgr admin.htr@hoermann.cn   #更改错误页面上管理员邮箱地址
httpd_suppress_version_string on
visible_hostname proxy.test.com         #设置代理主机名
[root@web01 ~]# cat /usr/local/squid/etc/conf.d/client_ip.conf
acl LocalNet src 172.16.0.0/12 # RFC1918 possible internal network
acl Host src 10.47.39.16/32
acl Conn maxconn 5
[root@web01 ~]# cat /usr/local/squid/etc/conf.d/dst_ip.conf
acl Dst_IP dst 10.47.39.7/32
[root@web01 ~]# cat /usr/local/squid/etc/conf.d/port.conf
acl Dst_Port port 80
[root@web01 ~]# cat /usr/local/squid/etc/conf.d/domain.conf
acl DOMAIN dstdomain www.baidu.com
[root@web01 ~]# cat /usr/local/squid/etc/conf.d/http_access.conf #调用ACL
http_access allow LocalNet DOMAIN
http_access allow Host DOMAIN

Squid认证
#使用认证文件里的用户名密码作认证
#需要htpasswd工具来创建passwd文件(安装Apache软件,此工具会附带安装)
#htpasswd -c /etc/squid/passwd proxy_username 创建认证用户,输入相应的密码后会在/etc/squid目录下生成passwd文件
#auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd 这个是使用简单的用户名密码验证
#启用LDAP认证
auth_param basic program /usr/lib64/squid/basic_ldap_auth -P -R -b "dc=domain,dc=com" -D "cn=LDAPuser,ou=test,ou=test-ou,dc=domain,dc=com" -w "password123321" -f sAMAccountName=%s -h 192.168.1.1,192.168.1.2,192.168.1.3
auth_param basic children 5    #参数auth_param basic children定义认证程序的进程数
auth_param basic realm My proxy Caching Domain    #参数auth_param basic realm定义了Web浏览器显示用户名/密码对话框时的领域内容
auth_param basic credentialsttl 2 hours    #参数auth_param basic credentialsttl定义了用户经过认证后的有效时间,用户在有效时间后如果还需要继续使用Squid代理服务,则必须重新输入用户名和密码
acl auth_user proxy_auth REQUIRED    #强制使用认证
#允许已认证的用户访问,与上面的acl auth_user proxy_auth REQUIRED相呼应
http_access allow auth_user

Squid服务启动脚本
[root@web01 ~]# cat /etc/init.d/squid

#!/bin/bash
#squid server script
#--
source /etc/init.d/functions
DirPath=/usr/local/squid
function start() {
if [[ ! -f "$DirPath/var/run/squid.pid" ]];then
$DirPath/sbin/squid
sleep
action "Start Squid" /bin/true
else
action "Squid already running!!!" /bin/false
exit
fi
}
function stop() {
if [[ -f "$DirPath/var/run/squid.pid" ]];then
$DirPath/sbin/squid -k shutdown
printf "Stopping Squid"
while [[ -f "$DirPath/var/run/squid.pid" ]];do printf ".";usleep ;done
echo " "
action "Already Stop Squid" /bin/true
else
action "Squid not run" /bin/false
exit
fi
}
function reload() {
if [[ -f "$DirPath/var/run/squid.pid" ]];then
$DirPath/sbin/squid -k reconfigure
sleep
action "Reload Squid Configure" /bin/true
else
action "Squid not run" /bin/false
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
*)
echo $"Usage: $0 {start|stop|reload|restart}"
esac

Squid日志分析
#cat access.log|gawk '{print $4}'|sort|uniq -c|sort -nr
9568 TCP_IMS_HIT/304
6313 TCP_HIT/200
2133 TCP_MISS/200
1568 TCP_MISS/206
587 TCP_MEM_HIT/200
531 TCP_MISS/304
207 TCP_REFRESH_HIT/200
152 TCP_REFRESH_HIT/304
86 TCP_NEGATIVE_HIT/404
69 TCP_MISS/404
9 TCP_MISS/000
4 TCP_MISS/503
1 TCP_REFRESH_MISS/000
1 TCP_DENIED/400

#cat /var/log/squid/access.log |grep TCP_MEM_HIT
如果看到很多的TCP_MEM_HIT ,这表明该文件是从内存缓存读取的,squid已经起作用了!你再用浏览器打开该文件,应该是快如闪电了..呵呵,大功告成了!还有其他类型的HIT,如TCP_HIT等等,这些是从磁盘读取的,我觉得加速的意义不大,只不过缓解了apache的压力而已.
相应于HTTP请求,下列标签可能出现在access.log文件的第四个域.
TCP_HIT
Squid发现请求资源的貌似新鲜的拷贝,并将其立即发送到客户端.
TCP_MISS
Squid没有请求资源的cache拷贝.
TCP_REFERSH_HIT
Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器.原始服务器返回304(未修改)响应,指示squid的拷贝仍旧是新鲜的.
TCP_REF_FAIL_HIT
Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器.然而,原始服务器响应失败,或者返回的响应Squid不能理解.在此情形下,squid发送现有cache拷贝(很可能是陈旧的)到客户端.
TCP_REFRESH_MISS
Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器.原始服务器响应新的内容,指示这个cache拷贝确实是陈旧的.
TCP_CLIENT_REFRESH_MISS
Squid发现了请求资源的拷贝,但客户端的请求包含了Cache-Control: no-cache指令.Squid转发客户端的请求到原始服务器,强迫cache确认.
TCP_IMS_HIT
客户端发送确认请求,Squid发现更近来的、貌似新鲜的请求资源的拷贝.Squid发送更新的内容到客户端,而不联系原始服务器.
TCP_SWAPFAIL_MISS
Squid发现请求资源的有效拷贝,但从磁盘装载它失败.这时squid发送请求到原始服务器,就如同这是个cache丢失一样.
TCP_NEGATIVE_HIT
在对原始服务器的请求导致HTTP错误时,Squid也会cache这个响应.在短时间内对这些资源的重复请求,导致了否命中. negative_ttl指令控制这些错误被cache的时间数量.请注意这些错误只在内存cache,不会写往磁盘.下列HTTP状态码可能导致否定 cache(也遵循于其他约束): 204, 305, 400, 403, 404, 405, 414, 500, 501, 502, 503, 504.
TCP_MEM_HIT
Squid在内存cache里发现请求资源的有效拷贝,并将其立即发送到客户端.注意这点并非精确的呈现了所有从内存服务的响应.例如,某些cache在内存里,但要求确认的响应,会以TCP_REFRESH_HIT, TCP_REFRESH_MISS等形式记录.
TCP_DENIED
因为http_access或http_reply_access规则,客户端的请求被拒绝了.注意被http_access拒绝的请求在第9域的值是NONE/-,然而被http_reply_access拒绝的请求,在相应地方有一个有效值.
TCP_OFFLINE_HIT
当offline_mode激活时,Squid对任何cache响应返回cache命中,而不用考虑它的新鲜程度.
TCP_REDIRECT
重定向程序告诉Squid产生一个HTTP重定向到新的URI(见11.1节).正常的,Squid不会记录这些重定向.假如要这样做,必须在编译squid前,手工定义LOG_TCP_REDIRECTS预处理指令.
NONE
无分类的结果用于特定错误,例如无效主机名.
相应于ICP查询,下列标签可能出现在access.log文件的第四域.
UDP_HIT
Squid在cache里发现请求资源的貌似新鲜的拷贝.
UDP_MISS
Squid没有在cache里发现请求资源的貌似新鲜的拷贝.假如同一目标通过HTTP请求,就可能是个cache丢失.请对比UDP_MISS_NOFETCH.
UDP_MISS_NOFETCH
跟UDP_MISS类似,不同的是这里也指示了Squid不愿去处理相应的HTTP请求.假如使用了-Y命令行选项,Squid在启动并编译其内存索引时,会返回这个标签而不是UDP_MISS.
UDP_DENIED
因为icp_access规则,ICP查询被拒绝.假如超过95%的到某客户端的ICP响应是UDP_DENIED,并且客户端数据库激活了(见附录A),Squid在1小时内,停止发送任何ICP响应到该客户端.若这点发生,你也可在cache.log里见到一个警告.
UDP_INVALID
Squid接受到无效查询(例如截断的消息、无效协议版本、URI里的空格等).Squid发送UDP_INVALID响应到客户端.

curl -i -k -x http://10.47.39.8:3128 https://www.baidu.com    #squid代理测试命令

参考链接:
       http://blog.csdn.net/alonesword/article/details/18521449      #squid日志详解
       http://www.visolve.com/squid/squid24s1/access_controls.php
       http://weihaoxuan.blog.51cto.com/8698172/1419990      #squid代理
       http://www.360doc.com/content/13/0418/19/2633_279279885.shtml
       https://www.cnblogs.com/MacoLee/p/5853413.html        #haproxy代理配置
       wget https://fossies.org/linux/misc/haproxy-1.8.8.tar.gz
       http://zyan.cc/book/squid/index.html

Squid代理配置的更多相关文章

  1. squid 代理服务器安装配置

    ubuntu16.04 安装squid代理服务器配置 本文参考 http://www.cnblogs.com/newflypig/archive/2012/09/28/2862000.html 1,删 ...

  2. 使用CentOS7配置Squid代理

    其实之前配过一个squid,只是由于太懒,网上随便搜了一个教程,用了默认端口并且没有添加用户认证.某天不幸的被爬虫扫到,被用来发了半个月的垃圾邮件..直到有一天登录邮箱,看到了一大坨警告邮件,才意识到 ...

  3. squid 透明代理配置

    阿铭在教程中已经介绍过squid的安装和配置,http://study.lishiming.net/chapter22.html 教程中只介绍了初级的正向代理和反向代理,这篇文档将要介绍透明代理如何配 ...

  4. squid代理服务器安装和配置

    服务器版本:centos6.5 squid版本:3.1 Squid介绍 Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用户想要下载一个主页时,可 ...

  5. 【树莓派】Squid代理以及白名单配置

    Squid安装: sudo apt-get install squid3 -y 首先,建议备份一下这个配置文件,以免配错之后,无法恢复,又得重新安装: sudo cp /etc/squid3/squi ...

  6. Squid 反向代理配置

    Squid 反向代理配置 1.删除主配置文件重写写入配置 rm -f /etc/squid/squid.conf 2.重新写入配置反向代理 vim /etc/squid/squid.conf # 监听 ...

  7. Squid 正向代理配置

    Squid 正向代理配置 1.删除主配置文件重写写入配置 rm -f /etc/squid/squid.conf 2.重新写入配置正向代理 vim /etc/squid/squid.conf # 监听 ...

  8. 使用Squid做代理服务器,Squid单网卡透明代理配置详解(转)

    使用Squid做代理服务器 说到代理服务器,我们最先想到的可能是一些专门的代理服务器网站,某些情况下,通过它们能加快访问互联网的速度.其实,在需要访问外部的局域网中,我们自己就能设置代理,把访问次数较 ...

  9. nginx反向代理配置及优化

    nginx反向代理配置及优化前言: 由于服务器apache抗不住目前的并发.加上前端squid配置后,问题依然无法解决.而页面程序大部分是动态.无法使用fastcgi来处理.因此想使用nginx做为反 ...

随机推荐

  1. 新建一个Windows Service的方法

    http://www.cnblogs.com/YanPSun/archive/2010/05/22/1741381.html http://blog.csdn.net/m15188153014/art ...

  2. git克隆源码时提示fatal: HTTP request failed怎么办?

    答: 升级git版本即可 centos下升级git的方法在此

  3. Linux/shell: Concatenate multiple lines to one line

    $ cat file START Unix Linux START Solaris Aix SCO 1. Join the lines following the pattern START with ...

  4. Transaction之EF

    了解Entity Framework中事务处理 Entity Framework 6以前,框架本身并没有提供显式的事务处理方案,在EF6中提供了事务处理的API. 所有版本的EF,只要你调用SaveC ...

  5. RabbitMQ.client消息队列

    doc 介绍 分类&&典型应用 中文文档 使用

  6. Centos7更改网卡名称Eth0并配置静态IP

    1.首先查看一下centos7的网卡名称 eno33554984 2.更改为centos7之前版本的网卡名称 3.更改网卡文件的名称 4.禁用可预测命名规则. 通过编辑 /etc/default/gr ...

  7. BZOJ 3673: 可持久化并查集(可持久化并查集+启发式合并)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3673 题意: 思路: 可持久化数组可以用可持久化线段树来实现,并查集的查询操作和原来的一般并查集操作 ...

  8. 为DataGridView增加鼠标滚轮功能

    #region 鼠标滚动 [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "Wi ...

  9. vue--移动端兼容问题

    click的300ms延迟: 引入fastclick库来解决 输入命令 npm install fastclick 在main.js导入 import Vue from 'vue' import Ap ...

  10. Addition Chains

    题目描述: 一个与 n 有关的整数加成序列 < a0 , a1 , a2 ...am> 满足一下四个条件: 1.a0=1 2.am=n 3.a0<a1<a2<...< ...