linux 代理服务squid 用法

经常使用命令

1. 在开启squid以前,你应该验证其配置文件是否正确。运行以下命令便可:php

# squid -k parse   #假如你看不到输出,配置文件有效,你能继续后面的步骤。然而,若是配置文件包含错误,squid会告诉你css

2. 初始化cache目录.即创建缓存目录的存储格式nginx

# squid -z   #只需在第一次启动squid服务以前执行(在初次运行squid以前,或者不管什么时候你增长了新的cache_dir,你必须初始化cache目录。)web

# squid -zX    #cache目录初始化可能花费一些时间,依赖于cache目录的大小和数量,以及磁盘驱动器的速度。假如你想观察这个过程,请使用-X选项apache

3. 启动squid服务vim

# service squid start   #最安全作法浏览器

# /usr/sbin/squid -s  #后台启动,有可能不生效缓存

4. 中止squid安全

# squid -k shutdown   #最安全的中止squid的方法是使用squid -k shutdown命令服务器

5. 不中断服务,重配置运行中的squid进程

# squid -k reconfigure   #运行中的从新引导配置squid最好的方法。squid.conf文件作了改动。为了让新设置生效,你能够关闭和重启squid。或者在squid运行时,重配置它。

6. 滚动日志文件处理

除非你在squid.conf里禁止,squid会写大量的日志文件。你必须周期性的滚动日志文件,以阻止它们变得太大。squid将大量的重要信息写入日志,假如写不进去了,squid会发生错误并退出。为了合理控制磁盘空间消耗,在cron里使用以下命令:

squid -k rotate

例如,以下任务接口在天天的早上4点滚动日志:

0 4 * * * /usr/local/squid/sbin/squid -k rotate

该命令作两件事。首先,它关闭当前打开的日志文件。而后,经过在文件名后加数字扩展名,它重命名cache.log,store.log,和 access.log。例如,cache.log变成cache.log.0,cache.log.0变成cache.log.1,如此继续,滚动到 logfile_rotate选项指定的值。

7.添加启动项

# echo 'systemctl start squid.service' >> /etc/rc.local

8.默认正向代理(3128)支持https,无需设置加密文件 ,反向代理时须要(通常不用squid作反向代理)

squid配置文件解析(/etd/squid/squid.conf)

#
acl all src 0.0.0.0/0.0.0.0          #容许全部IP访问
acl manager proto http              #manager url协议为http
acl localhost src 127.0.0.1/255.255.255.255  #允午本机IP
acl to_localhost dst 127.0.0.1                 #允午目的地址为本机IP
acl CONNECT method CONNECT        #请求方法以CONNECT
#http_access allow all                #容许全部人使用该代理.
#http_reply_access allow all                #容许全部客户端使用该代理

acl Safe_ports port 80          # 容许安全更新的端口为80
acl Safe_ports port 443        #容许安全更新的端口为443

acl localnet src 10.195.249.225     #
acl localnet src 10.195.236.141     #

http_access allow localnet           #
http_access deny !Safe_ports           #


acl OverConnLimit maxconn 16        #限制每一个IP最大容许16个链接,防止攻击
http_access deny OverConnLimit

icp_access deny all                        #禁止从邻居服务器缓冲内发送和接收ICP请求.
miss_access allow all                #容许直接更新请求
ident_lookup_access deny all                                #禁止lookup检查DNS
http_port 8080 transparent                                #指定Squid监听浏览器客户请求的端口号。

hierarchy_stoplist cgi-bin ?                #用来强制某些特定的对象不被缓存,主要是处于安全的目的。
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

cache_mem 1 GB        #这是一个优化选项,增长该内存值有利于缓存。应该注意的是:
                     #通常来讲若是系统有内存,设置该值为(n/)3M。如今是3G 因此这里1G
fqdncache_size 1024        #FQDN 高速缓存大小
maximum_object_size_in_memory 2 MB        #容许最大的文件载入内存

memory_replacement_policy heap LFUDA  #动态使用最小的,移出内存cache
cache_replacement_policy heap LFUDA         #动态使用最小的,移出硬盘cache

cache_dir ufs /home/cache 5000 32 512  #高速缓存目录 ufs 类型 使用的缓冲值最大允午1000MB空间,
#32个一级目录,512个二级目录

max_open_disk_fds 0                                 #容许最大打开文件数量,0 无限制
minimum_object_size 1 KB                         #允午最小文件请求体大小
maximum_object_size 20 MB                 #允午最大文件请求体大小

cache_swap_low 90                            #最小容许使用swap 90%
cache_swap_high 95                            #最多容许使用swap 95%

ipcache_size 2048                                # IP 地址高速缓存大小 2M
ipcache_low 90                                #最小容许ipcache使用swap 90%
ipcache_high 95                                  #最大容许ipcache使用swap 90%


access_log /var/log/squid/access.log squid        #定义日志存放记录
cache_log /var/log/squid/cache.log squid
cache_store_log none                        #禁止store日志

emulate_httpd_log on        #将使Squid仿照Web服务器的格式建立访问记录。若是但愿使用
                                #Web访问记录分析程序,就须要设置这个参数。

refresh_pattern . 0 20% 4320 override-expire override-lastmod reload-into-ims ignore-reload   #更新cache规则

acl buggy_server url_regex ^http://.... http://          #只容许http的请求
broken_posts allow buggy_server

acl apache rep_header Server ^Apache                 #容许apache的编码
broken_vary_encoding allow apache

request_entities off                                        #禁止非http的标分准请求,防止攻击
header_access header allow all                        #容许全部的http报头
relaxed_header_parser on                                #不严格分析http报头.
client_lifetime 120 minute                                #最大客户链接时间 120分钟

cache_mgr sky@test.com                        #指定当缓冲出现问题时向缓冲管理者发送告警信息的地址信息。

cache_effective_user squid                        #这里以用户squid的身份Squid服务器
cache_effective_group squid

icp_port 0                       #指定Squid从邻居服务器缓冲内发送和接收ICP请求的端口号。
                     #这里设置为0是由于这里配置Squid为内部Web服务器的加速器,
                     #因此不须要使用邻居服务器的缓冲。0是禁用

# cache_peer 设置容许更新缓存的主机,因是本机因此127.0.0.1
cache_peer 127.0.0.1 parent 80 0 no-query default multicast-responder no-netdb-exchange
cache_peer_domain 127.0.0.1                                 
hostname_aliases 127.0.0.1

error_directory /usr/share/squid/errors/Simplify_Chinese        #定义错误路径

always_direct allow all                # cache丢失或不存在是容许全部请求直接转发到原始服务器
ignore_unknown_nameservers on        #开反DNS查询,当域名地址不相同时候,禁止访问
coredump_dir  /var/log/squid                 #定义dump的目录

max_filedesc 2048                #最大打开的文件描述

half_closed_clients off        #使Squid在当read再也不返回数据时当即关闭客户端的链接。
                                #有时read再也不返回数据是因为某些客户关闭TCP的发送数据
                                #而仍然保持接收数据。而Squid分辨不出TCP半关闭和彻底关闭。

buffered_logs on #若打开选项“buffered_logs”能够稍稍提升加速某些对日志文件的写入,该选项主要是实现优化特性。#    
squid.conf配置文件说明

Squid命中率分析

/usr/local/squid/bin/squidclient -p 80 mgr:info /usr/local/squid/bin/squidclient -p 80 mgr:5min

能够看到详细的性能状况,其中PORT是你的proxy的端口,5min能够是60min

取得squid运行状态信息:

squidclient -p 80 mgr:info

取得squid内存使用状况:

squidclient -p 80 mgr:mem

取得squid已经缓存的列表:

squidclient -p 80 mgr:bjects. use it carefully,it may crash

取得squid的磁盘使用状况:

squidclient -p 80 mgr:diskd

强制更新某个url:

squidclient -p 80 -m PURGE http://www.xxx.com/xxx.php

更多的请查看:squidclient-h 或者 squidclient -p 80 mgr:
查命中率:

squidclient -h IP(具体侦听IP) -p 80(具体侦听端口) mgr:info

正向代理访问控制案例

实现以下要求:
1,容许周一到周五12:00-14:00和17:30-21:00和双休能上网,别的时间不能上网
2,禁止下载.exe .rar .mp3 .avi .rmvb .mp4后缀的文件
3,禁止访问qq.com,mop.com,sina.com,163.com,youku.com
4,禁止访问网址中包含某些关键字的网站:好比 sex news movie sport game stock
5, vip没有任何限制
--把上面五点状况作成两种需求:
1,上课时间不能上任何网站,休息时间能够上网,但受限, vip没有任何限制
理论分析:
http_access    容许  vip
http_access   拒绝  限制
http_access    容许  休息时间
http_access deny all

实验需求一:# vim /etc/squid/squid.confacl lunchtime time MTWHF 12:00-14:00acl dinnertime time MTWHF 17:30-21:00acl weekend time SA 00:00-24:00acl badfile urlpath_regex -i \.mp3$ \.rmvb$ \.exe$ \.zip$ \.mp4$ \.avi$ \.rar$acl badweb dstdom_regex "/etc/squid/denywebsite"acl badword url_regex -i sex news movie sport game stockacl vip arp 00:0C:29:79:0C:1Ahttp_access allow viphttp_access deny badfilehttp_access deny badwebhttp_access deny badwordhttp_access allow lunchtimehttp_access allow dinnertimehttp_access allow weekendhttp_access deny all# vim /etc/squid/denywebsiteqqsinamop163youkud# systemctl restart squid2,上课时间能够上网,但受限,休息时间能够无限制上网, vip没有任何限制理论分析:http_access   容许  viphttp_access   容许  休息时间http_access 拒绝  限制http_access allow all实验需求二:# vim /etc/squid/squid.confacl lunchtime time MTWHF 12:00-14:00acl dinnertime time MTWHF 17:30-21:00acl weekend time SA 00:00-24:00acl badfile urlpath_regex -i \.mp3$ \.rmvb$ \.exe$ \.zip$ \.mp4$ \.avi$ \.rar$acl badweb dstdom_regex "/etc/squid/denywebsite"acl badword url_regex -i sex news movie sport game stockacl vip arp 00:0C:29:79:0C:1Ahttp_access allow viphttp_access allow lunchtimehttp_access allow dinnertimehttp_access allow weekendhttp_access deny badfilehttp_access deny badwebhttp_access deny badwordhttp_access allow all

相关文章
相关标签/搜索