您的位置:首页 > 运维架构 > 反向代理

liunx服务使用(squid 代理服务器)

2013-09-13 19:39 363 查看
咳咳,如果一个网站,因为访问的人多反应慢怎么办? 如果自己的公司内部想把一些网站禁止访问,做控制怎么办?好好学学squid代理服务器吧 他都可以做到。

squid (代理服务器)
正向代理
安转包:
rpm -ivh squid-2.6.STABLE21-6.el5.i386.rpm
卸载包
rpm -e squid
启动服务
service squid restart

#如果启动失败就把自己的主机名字该进vim /etc/squid/squid.conf去
visible_hostname
visible hostname 用户名

可以找 squid 中文指南写的很详细

netstat -anplt |grep squid 查看squid 监听那个端口
cd /etc/init.d/ 这里都是脚本

/etc/init.d/httpd start 启动httpd
service httpd start 一样的

---------------------------------------------------------------
主配置文件
vim /etc/squid/squid.conf
缓存目录
cd /var/spool/squid/

------------------------
Squid 主要组成部分
服务名:squid
主程序:/usr/sbin/squid
配置目录:/etc/squid
主配文件:/etc/squid/squid.conf
监听tcp端口号:3128
默认访问日志文件:/var/log/squid/access.log
5.squid 常用配置选项(/etc/squid/squid.conf)
http_port 3128 (还可以只监听一个一个ip http_port 192.168.0.1:3128)
cache_mem 64MB#缓存占内存大小
maximum_object_size 4096KB#最大缓存块
reply_body_max_size 1024000 allow all #限定下载文件大小
access_log /var/log/squid/access.log #访问日志存放的文件
visible_hostname proxy.test.xom #可见的主机名
cache_dir ufs /var/spool/squid 100 16 256
usf:缓存数据的存储格式
/var/spool/squid 缓存目录
100 : 缓存目录占磁盘空间大小(M)
16 :缓存空间一级子目录个数
256 :缓存空间二级子目录个数
cache_mgr webmaster@test.com #定义管理员邮箱
http_access deny all #访问控制

-----------------------------
正向代理服务器
vim /etc/squid/squid.conf
http_port 3128
#access_log /var/log/squid/access.log
http_access allow all 把这里设置成允许

主机 作两个地址 一个是外网 一个内网 http_access allow all 把这里设置成允许
客户端 设置好内网 设置好后 在网页上-编辑-收选项-高级-网络-设置
访问 intelnet 的地址

---------------------
透明代理

透明代理缓冲服务器的配置:

vim /etc/squid/squid.conf
1 http_port 3128 transparent
b.添加iptables规则:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 3128

客户端
查看路由
route -n
添加路由网关
route add default gw 192.168.1.2

----------------------------
透明代理的访问控制 !代表取反 匹配是顺序匹配 数字名称不性

定义acl列表
acl 列表名称 列表类型 列表内容 …
针对acl列表进行限制
http_access allow或deny 列表名……

拒绝某个ip地址
acl dy_ip src 192.168.1.103/32
http_access deny dy_ip

拒绝某个网段
acl dy_ip src 192.168.1.0/24
acl dy_ip src 192.168.1.0/24 192.168.10.0/24
acl dy_ip src 192.168.1.0-192.168.10.0/24

http_access deny dy_ip
---------------

通过文件拒绝某个ip的访问
acl guests src “/etc/squid/guest”

http_access deny guest
/etc/squid/guests内容
192.168.1.131

----------------
拒绝端口号
acl d_p port 80
acl d_p port 1-1024
http_access deny d_p

-----------------

允许域名为uplooking.com域访问本地代理服务器 (其实就是域名解析的IP 还是限制IP)

acl permitted_domain src uplooking.com

http_access allow permitted_domain
------------------

拒绝访那个一个网站
acl B dstdomain www.squid-cache.org

http_access deny B

--------------

服务
acl FTP proto FTP
http_access deny FTP

time 时间
CodeDay
SSunday 日
MMonday 一
TTuesday 二
WWednesday 三
HThursday 四
FFriday 五
ASaturday 六
DAll weekdays (M-F)

时间跨越子夜,你需要把它们分成两个ACL来写,或者使用否定机制来定义非忙时。例如:
acl Offpeak1 20:00-23:59
acl Offpeak2 00:00-04:00
http_access allow Offpeak1 ...
http_access allow Offpeak2 ...
acl Peak 04:00-20:00
http_access allow !Peak ...

应该在同一个time ACL里放置多个日期和时间范围列表。例如,假如你输入
:acl Blah time M 08:00-10:00 W 09:00-11:00,实际能做到的是:acl Blah time MW 09:00-11:00,解析仅仅使用最后一个时间范围。
正确的写法是,将它们写进两行:
acl Blah time M 08:00-10:00
acl Blah time W 09:00-11:00

控制访问包含sexy字段的网址
acl deny_url url_regex -i sexy
http_access deny deny_url

拒绝某些字段结尾的网址
acl RealFile urlpath_regex -i \.rmvb$ \.rm$
http_access deny RealFile
解释一下含义
acl kaixin_net dstdomain .kaixin.com 定义网站
acl adv_net src 192.168.0.2-192.168.0.20/255.255.255.255 定义IP
acl mynetwork src 192.168.0.0/24
acl kaixin_time time MTWHF 7:00-9:30
acl all src 0.0.0.0/0.0.0.0

http_access allow adv_net kaixin_time kaixin_net
http_access deny mynetwork kaixin_time kaixin_net
http_access allow all

练习
允许网段10.0.0.124/24以及192.168.10.15/24内的所有客户机访问代理服务器,
并且允许在文件/etc/squid/guest列出的客户机访问代理服务器,除此之外的客户机将拒绝访问本地代理服务器:
acl a src 10.0.0.124/24
acl b src "/etc/squid/guest"
http_access allow a b
http_access deny all

允许域名为job.net、gdfq.edu.cn的两个域访问本地代理服务器,其他的域都将拒绝访问本地代理服务器:
acl a src job.net gdfq.edu.cn
http_access allow a
http_access deny all

拒绝客户机通过代理服务器访问文件中指定IP或者域名的网站,
其中文件/etc/squid/ deny_ip中存放有拒绝访问的IP地址,
文件/etc/squid/deny_dns中存放有拒绝访问的域名:
acl aa dst "/etc/squid/deny_ip"
acl bb src "/etc/squid/deny_dns"
http_access aa bb
touch /etc/squid/deny_dns
touch /etc/squid/deny_ip
允许所有的用户在规定的时间内(周一至周四的8:30到20:30)访问代理服务器
只允许特定的用户(系统管理员,其网段为:192.168.10.0/24)在周五下午访问代理服务器,
其他的在周五下午一点至六点一律拒绝访问代理服务器:
acl a time MTWH 8:30-20:30
acl b src 192.168.10.0/24
acl c time F 13:00-18:00
http_access allow all a
http_access allow c b
http_access deny all

---------------------------------------------------------------------------
配置过程
Http_port 80
cache_peer 192.168.1.105 parent 8888 0 originserver

cache_peer Web服务器地址 服务器类型 http端口 icp端口 [可选项]
cache_peer 指定真正WEB服务器的位置
parent 服务器类型对应到目标主机的缓存级别,上游Web主机一般使用“parent”(父服务
器)
icp端口用于连接相邻的ICP(Internet Cache Protocol)缓存服务器(通常为另一台Squid主机),如果没有,则使用0;
originserver 表示该服务器作为提供Web服务的原始主机,
weight=n”指定服务器的优先权重,n为整数,数字越大优先级越高(缺省为1);
max-conn=n”指定反向代理主机到该web服务器的最大连接数。

第二种SQUID 反向代理,一对多WEB SERVER做负载均衡
192.168.0.2
/
Client ---squid server-----| ------> | - 192.168.0.3
1.1.1.1 \
192.168.0.4
Squid server的两个IP:1.1.1.1 192.168.0.254
3个web server分别是:192.168.0.2 192.168.0.3 192.168.0.4 需要有相同的页面内容,可以通过NFS共享页面内容,三个WEB server挂载NFS共享到/var/www/html下

配置文件中在一对一反向代理的基础上修改cache_peer行为如下三行
ache_peer 192.168.0.2 parent 8888 0 round-robin
ache_peer 192.168.0.3 parent 8888 0 round-robin
ache_peer 192.168.0.4 parent 8888 0 round-robin

第二种SQUID 反向代理,一对多WEB SERVER做负载均衡
192.168.0.2
/
Client ---squid server-----| ------> | - 192.168.0.3
1.1.1.1 \
192.168.0.4

Squid server的两个IP:1.1.1.1 192.168.0.254
3个web server分别是:192.168.0.2 192.168.0.3 192.168.0.4 需要有相同的页面内容,可以通过NFS共享页面内容,三个WEB server挂载NFS共享到/var/www/html下
配置文件中在一对一反向代理的基础上修改cache_peer行为如下三行
ache_peer 192.168.0.2 parent 8888 0 round-robin
ache_peer 192.168.0.3 parent 8888 0 round-robin
ache_peer 192.168.0.4 parent 8888 0 round-robin

-------------------------------------------------------------------

反向代理缓冲服务器配置
一对一的
squid服务器端
配置文件
/etc/squid/squid.conf

http_prot 80 vhost 改成80
#cache_peer
cache_peer 192.168.1.12 parent 80 0 originserver 添加上

tail -f /var/log/squid/access.log 日志文件显示那个地址访问你

-------------------------

一对多的(aapche)

反向代理

配置文件
/etc/squid/squid.conf
http_prot 80 vhost 改成80
#cache_peer
cache_peer 192.168.1.157 parent 80 0 round-robin
cache_peer 192.168.1.113 parent 80 0 round-robin
cache_peer 192.168.1.111 parent 80 0 round-robin

本文出自 “history_xcy” 博客,请务必保留此出处http://historys.blog.51cto.com/7903899/1296677
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: