Centos7部署squid代理和缓存服务器
2020-06-29 17:45
1136 查看
简介
Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求
代理方式
正向代理可以让用户使用squid代理服务器进行上网,还可以基于IP地址、网站关键字、下载文件后缀等实现类似行为管控的功能
透明代理则不需要用户再浏览器输入代理服务器的ip,只需将服务器的网关设置成代理服务器的ip地址即可
反向代理可以大幅提升网站的访问速度,减轻网站后台服务器的负载压力
定制访问控制规则
#设置访问控制策略语法 acl 策略名字 src(类型,ip/port) ip/port #注意:把拒绝策略放在允许策略前面 #自己定制原地址acl策略 acl deny_ip src 192.168.1.105 #并定制允许/拒绝此策略 http_access allow deny_ip #定制策略文件(ip) acl deny_group src "/etc/squid/deny_group" http_access allow deny_group #定制目标地址acl策略 acl deny_destination dst 192.168.29.133 http_access allow deny_destination #定制目标网站acl策略 acl deny_web dstdomain -i www.baidu.com http_access allow deny_web #定制含有xxx的网站 acl deny_url url_regex -i baidu.com http_access allow deny_url #定制超级用户权限 acl vip arp MAC地址 http_access allow vip #定制时间策略(SMTWHFA,日到六) #跨越子夜用取反,跨天数要分两行 acl test1 src ip acl test2 time MTWHF 9:00-18:00 http_access allow test1 test2 #禁止下载后缀名文件 acl test urlpath_regex -i \.mp3$ http_access allow test
前期准备
准备两台Centos7虚拟机和一台win7虚拟机,配置IP地址和hostname,关闭防火墙和selinux,同步系统时间
ip | hostname |
---|---|
192.168.29.145,192.168.31.134 | squid_server |
192.168.31.129 | win7 |
192.168.29.134 | web_server |
配置webserver
#从官网下载nginx官方Yum源 [root@web_server ~]# yum install nginx -y #配置首页 [root@web_server ~]#echo "node1" > /usr/share/nginx/html/index.html #启动服务 [root@web_server ~]# systemctl start nginx
安装squid
[root@squid_server ~]# yum install squid -y
正向代理
配置并开启服务
[root@squid_server~]# vi /etc/squid/squid.conf http_port 3128 #设定缓存文件夹,大小,一级目录个数,二级目录个数 cache_dir ufs /var/spool/squid 100 16 256 cache_effective_user squid cache_effective_group squid #添加主机名 visible_hostname localhost cache_mem 100 MB #开启服务 [root@squid_server~]# systemctl start squid.service
在宿主机浏览器设置代理
浏览器访问web_server
查看web_server和squid_server日志
[root@web_server ~]# tail -f /var/log/nginx/access.log 192.168.29.145 - - [29/Jun/2020:16:06:10 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36" "192.168.29.1" [root@squid_server~]# tail -f /var/log/squid/access.log 1593417955.839 2 192.168.29.1 TCP_MEM_HIT/200 355 GET http://192.168.29.134/ - HIER_NONE/- text/html
关闭nginx服务
[root@web_server ~]# systemctl stop nginx
浏览器访问web_server
查看squid_server日志
[root@squid_server~]# tail -f /var/log/squid/access.log 1593418080.136 1 192.168.29.1 TCP_REFRESH_FAIL_OLD/200 451 GET http://192.168.29.134/ - HIER_DIRECT/192.168.29.134 text/html
透明代理
修改配置文件
[root@squid_server~]# vi /etc/squid/squid.conf http_port 192.168.31.134:3128 transparent cache_dir ufs /var/spool/squid 100 16 256 cache_effective_user squid cache_effective_group squid visible_hostname localhost cache_mem 100 MB
重启服务
systemctl restart squid
配置DNS转发规则
[root@squid_server~]# iptables -t nat -A POSTROUTING -p udp --dport 53 -o ens33 -j MASQUERADE
开启数据包转发功能
[root@squid_server~]# vi /etc/sysctl.conf net.ipv4.ip_forward=1 [root@squid_server~]# sysctl -p
win7配置网关和DNS
此时ping www.baidu.com只能出现公网IP地址但ping不通
设置数据包转发规则
[root@squid_server~]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 [root@squid_server~]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3128 [root@squid_server~]# iptables -t nat -A POSTROUTING -s 192.168.31.0/24 -o ens33 -j SNAT --to 192.168.29.145 [root@squid_server~]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
此时ping通www.baidu.com
浏览器访问web_server
查看web_server和squid_server日志
[root@web_server ~]# tail -f /var/log/nginx/access.log 192.168.29.145 - - [29/Jun/2020:16:32:49 +0800] "GET / HTTP/1.1" 200 6 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "192.168.31.129" [root@squid_server~]# tail -f /var/log/squid/access.log 1593421346.838 2 192.168.31.129 TCP_MISS/200 380 GET http://192.168.29.134/ - ORIGINAL_DST/192.168.29.134 text/html
反向代理
修改配置文件
[root@squid_server~]# vi /etc/squid/squid.conf http_port 80 vhost #指定真正的服务器 #类型:parent父亲 #后台web服务器的真正端口 #代理服务器之间通讯的端口 #weight权重,originserver原始服务器 cache_peer 192.168.29.133 parent 80 0 originserver
浏览器访问squid_server
查看web_server和squid_server日志
[root@squid_server~]# tail -f /var/log/squid/access.log 1593420981.170 0 192.168.29.1 TCP_MEM_HIT/200 389 GET http://192.168.29.145/ - HIER_NONE/- text/html [root@web_server ~]# tail -f /var/log/nginx/access.log 192.168.29.145 - - [29/Jun/2020:16:56:55 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36" "192.168.29.1"
相关文章推荐
- Nginx实现反向代理
- 2、Nginx反向代理
- nginx介绍,负载均衡策略,反向代理,正向代理,常用属性以及tomcat高可用
- Nginx实战操作-反向代理
- PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
- Nginx反向代理,实现不同域名的WEB服务共同80端口
- CentOS7 配置Nginx反向代理+Python Flask web环境
- 反向代理例子
- 关于负载均衡前对反向代理的理解
- Centos7实现Nginx反向代理和负载均衡
- Nginx 虚拟主机、反向代理与代理缓存
- squid正向代理http&https
- Nginx反向代理相关配置及Windows 快捷方式
- 正向/反向代理说明
- 课时8 Nginx反向代理/location/URL重写功能实战
- nginx配置反向代理介绍
- Nginx使用301反向代理的各种配置
- 阿里云二级域名绑定与宝塔Nginx反向代理配置
- Nuxt项目部署到Linux Nginx反向代理 Kaki的博客
- Nginx 的基本配置,实现反向代理、负载均衡、动静分离。