Squid代理配置

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

ACCESS 1

[root@web01 ~]# vim /usr/local/squid/etc/squid.conf
#在拖欠公文里增加下面一行
cache_mgr test@163.com #改变错误页面上大班通知邮箱地址

/usr/local/squid/sbin/squid -z                           
 #初始化缓存空间
/usr/local/squid/sbin/squid                                #启动squid
/usr/local/squid/sbin/squid -k shutdown           #停止squid
/usr/local/squid/sbin/squid -k reconfigure        #双重载入配置文件
/usr/local/squid/sbin/squid -k rotate                #轮循日志
/usr/local/squid/sbin/squid -k parse                #自我批评语法

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

[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 jun.yao.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服务启动脚本:
[root@web01 ~]# cat /etc/init.d/squid
#!/bin/bash
#squid server script
#2017-10-20
source /etc/init.d/functions
DirPath=/usr/local/squid
function start() {
if [[ ! -f “$DirPath/var/run/squid.pid” ]];then
$DirPath/sbin/squid
sleep 2
action “Start Squid” /bin/true
else
action “Squid already running!!!” /bin/false
exit 1
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
800000;done
echo ” “
action “Already Stop Squid” /bin/true
else
action “Squid not run” /bin/false
exit 2
fi
}
function reload() {
if [[ -f “$DirPath/var/run/squid.pid” ]];then
$DirPath/sbin/squid -k reconfigure
sleep 2
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响应到客户端.
http://blog.csdn.net/alonesword/article/details/18521449 #squid日志详解

curl -i -k -x http://172.20.6.88:3128 https://www.baidu.com
http://www.cnblogs.com/duhuo/p/5695256.html #curl命令详解

Curl参数

ACCESS 2ACCESS 3

-a/--append                           上传文件时,附加到目标文件
--anyauth                              可以使用“任何”身份验证方法
--basic                                  使用HTTP基本验证
-B/--use-ascii                        使用ASCII文本传输
-d/--data <data>                   HTTP POST方式传送数据
--data-ascii <data>                以ascii的方式post数据
--data-binary <data>             以二进制的方式post数据
--negotiate                            使用HTTP身份验证
--digest                                 使用数字身份验证
--disable-eprt                         禁止使用EPRT或LPRT
--disable-epsv                        禁止使用EPSV
--egd-file <file>                     为随机数据(SSL)设置EGD socket路径
--tcp-nodelay                         使用TCP_NODELAY选项
-E/--cert <cert[:passwd]>      客户端证书文件和密码 (SSL)
--cert-type <type>                证书文件类型 (DER/PEM/ENG) (SSL)
--key <key>                         私钥文件名 (SSL)
--key-type <type>                私钥文件类型 (DER/PEM/ENG) (SSL)
--pass  <pass>                     私钥密码 (SSL)
--engine <eng>                    加密引擎使用 (SSL). "--engine list" for list
--cacert <file>                      CA证书 (SSL)
--capath <directory>            CA目   (made using c_rehash) to verify peer against (SSL)
--ciphers <list>                   SSL密码
--compressed                      要求返回是压缩的形势 (using deflate or gzip)
--connect-timeout <seconds>    设置最大请求时间
--create-dirs                  建立本地目录的目录层次结构
--crlf                             上传是把LF转变成CRLF
--ftp-create-dirs              如果远程目录不存在,创建远程目录
--ftp-method [multicwd/nocwd/singlecwd]    控制CWD的使用
--ftp-pasv                         使用 PASV/EPSV 代替端口
--ftp-skip-pasv-ip              使用PASV的时候,忽略该IP地址
--ftp-ssl                            尝试用 SSL/TLS 来进行ftp数据传输
--ftp-ssl-reqd                    要求用 SSL/TLS 来进行ftp数据传输
-F/--form <name=content>        模拟http表单提交数据
-form-string <name=string>      模拟http表单提交数据
-g/--globoff                    禁用网址序列和范围使用{}和[]
-G/--get                        以get的方式来发送数据
-h/--help                       帮助
-H/--header <line>              自定义头信息传递给服务器
--ignore-content-length        忽略的HTTP头信息的长度
-i/--include                    输出时包括protocol头信息
-I/--head                      只显示文档信息
-j/--junk-session-cookies      读取文件时忽略session cookie
--interface <interface>        使用指定网络接口/地址
--krb4 <level>                  使用指定安全级别的krb4
-k/--insecure                  允许不使用证书到SSL站点
-K/--config                    指定的配置文件读取
-l/--list-only                  列出ftp目录下的文件名称
--limit-rate <rate>            设置传输速度
--local-port<NUM>              强制使用本地端口号
-m/--max-time <seconds>        设置最大传输时间
--max-redirs <num>              设置最大读取的目录数
--max-filesize <bytes>          设置最大下载的文件总量
-M/--manual                    显示全手动
-n/--netrc                      从netrc文件中读取用户名和密码
--netrc-optional                使用 .netrc 或者 URL来覆盖-n
--ntlm                          使用 HTTP NTLM 身份验证
-N/--no-buffer                  禁用缓冲输出
-p/--proxytunnel                使用HTTP代理
--proxy-anyauth                选择任一代理身份验证方法
--proxy-basic                  在代理上使用基本身份验证
--proxy-digest                  在代理上使用数字身份验证
--proxy-ntlm                    在代理上使用ntlm身份验证
-P/--ftp-port <address>        使用端口地址,而不是使用PASV
-Q/--quote <cmd>                文件传输前,发送命令到服务器
--range-file                    读取(SSL)的随机文件
-R/--remote-time                在本地生成文件时,保留远程文件时间
--retry <num>                  传输出现问题时,重试的次数
--retry-delay <seconds>        传输出现问题时,设置重试间隔时间
--retry-max-time <seconds>      传输出现问题时,设置最大重试时间
-S/--show-error                显示错误
--socks4 <host[:port]>          用socks4代理给定主机和端口
--socks5 <host[:port]>          用socks5代理给定主机和端口
-t/--telnet-option <OPT=val>    Telnet选项设置
--trace <file>                  对指定文件进行debug
--trace-ascii <file>            Like --跟踪但没有hex输出
--trace-time                    跟踪/详细输出时,添加时间戳
--url <URL>                    Spet URL to work with
-U/--proxy-user <user[:password]>  设置代理用户名和密码
-V/--version                    显示版本信息
-X/--request <command>          指定什么命令
-y/--speed-time                放弃限速所要的时间。默认为30
-Y/--speed-limit                停止传输速度的限制,速度时间'秒
-z/--time-cond                  传送时间设置
-0/--http1.0                    使用HTTP 1.0
-1/--tlsv1                      使用TLSv1(SSL)
-2/--sslv2                      使用SSLv2的(SSL)
-3/--sslv3                      使用的SSLv3(SSL)
--3p-quote                      like -Q for the source URL for 3rd party transfer
--3p-url                        使用url,进行第三方传送
--3p-user                      使用用户名和密码,进行第三方传送
-4/--ipv4                      使用IP4
-6/--ipv6                      使用IP6

View Code

 

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

 

相关文章