使用squid和nginx服务搭建反向缓存代理服务
- 1.反向代理
- 1.1 反向代理概述
- 1.2 反向代理工作机制
- 2.搭建squid反向代理服务
- 2.1 Nginx服务器端配置
- 2.2 squid反向代理服务器配置
- 3.搭建nginx反向缓存代理服务
- 3.1 nginx反向缓存代理服务配置
- 3.2 nginx服务端配置
- 3.3 客户端验证访问
参见squid正向服务代理
1.反向代理
1.1 反向代理概述
如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的WEB服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。
1.2 反向代理工作机制
反向代理网站加速
工作机制:
- 缓存网页对象,减少重复请求
- 将互联网请求轮训或按权重分配到内网Web服务器
- 代理用户请求,避免用户直接访问Web服务器,提高安全
2.搭建squid反向代理服务
2.1 Nginx服务器端配置
###关闭和禁止防火墙开机自启功能
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
(1)安装nginx服务
cd /etc/yum.repos.d
rz -E
#nginx.repo
yum -y install nginx
(2)制作nginx服务的网页根目录数据内容
cd /usr/share/nginx/html
echo '<h1>IP:192.168.80.30,GZY like mygirl!!!</h1>' > test.html
###另一服务端的网页根目录
echo '<h1>IP:192.168.80.40,GZY like dacing!!!</h1>' > test.html
(3)修改/etc/nginx/nginx.conf配置文件,关闭长连接保持功能
vim /etc/nginx/nginx.conf
###在第27行关闭nginx服务的长连接保持功能
keepalive_timeout 0;
(4)启动nginx服务
systemctl restart nginx
systemctl enable nginx
systemctl status nginx
netstat -lntp | grep nginx
2.2 squid反向代理服务器配置
(1)修改squid的主配置文件/etc/squid.conf,添加反向代理配置项
vim /etc/squid.conf
......
--60行--修改,插入
http_port 192.168.80.20:80 accel vhost vport
cache_peer 192.168.80.30 parent 80 0 no-query originserver round-robin max_conn=5000 weight=1 name=web1
cache_peer 192.168.80.40 parent 80 0 no-query originserver round-robin max_conn=5000 weight=1 name=web2
cache_peer_domain web1 web2 www.gzy.com
#表示对www.gzy.com的请求,squid向192.168.80.30和192.168.80.40的80端口发出请求
----------------------------------------------------------------------------------------------------------
http_port 80 accel vhost vport #squid从一个缓存变成了一个Web服务器反向代理加速模式,这个时候squid在80端口监听请求,同时和web server的请求端口(vhost vport)绑定,这个时候请求到了squid,squid是不用转发请求的,而是直接要么从缓存中拿数据要么向绑定的端口直接请求数据。
accel :反向代理加速模式
vhost :支持域名或主机名来表示代理节点
vport :支持IP和端口来表示代理节点
parent :代表为父节点,上下关系,非平级关系
80 :代理内部web服务器的80端口
0 :没有使用icp(电信运营商),表示就一台squid服务器
no-query :不做查询操作,直接获取数据
originserver :指定是源服务器
round-robin :指定 squid 通过轮询方式将请求分发到其中一台父节点
max_conn :指定最大连接数
weight : 指定权重
name :设置别名
(2)清空之前透明模式配置的iptables规则
iptables -F
iptables -t nat -F
(3)关闭Apache服务,并重启squid服务
systemctl stop httpd #防止httpd服务使用的80端口号和quid反向代理配置的监听端口冲突
systemctl restart squid
systemctl status squid
netstat -lntp | grep squid
(4)客户端浏览器访问验证
在客户端中添加squid服务器的IP地址与域名对应对应;
vim /etc/hosts
###添加下面squid服务器与IP地址之间的对应关系
192.168.80.20 www.gzy.com
http://192.168.80.20/test.html
http://www.gzy.com/test.html
(5)squid反向代理和nginx服务端跟踪日志查看客户端浏览访问记录
squid反向代理跟踪日志;
tail -f /usr/local/squid/var/logs/access.log
nginx服务端跟踪日志;
tail -f /var/log/nginx/access.log
3.搭建nginx反向缓存代理服务
3.1 nginx反向缓存代理服务配置
###关闭和禁止防火墙开机自启功能
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
(1)安装nginx服务
cd /etc/yum.repos.d
rz -E
#nginx.repo
yum -y install nginx
(2)修改/etc/nginx/nginx.conf配置文件,关闭长连接保持功能
vim /etc/nginx/nginx.conf
###在第27行关闭nginx服务的长连接保持功能
keepalive_timeout 0;
(3)启动nginx服务
systemctl restart nginx
systemctl enable nginx
systemctl status nginx
netstat -lntp | grep nginx
(4)修改/etc/nginx/nginx.conf配置文件,添加反向代理缓存配置项
vim /etc/nginx/nginx.conf
###在31行左右添加如下内容
upstream web_server {
server 192.168.80.30:80;
server 192.168.80.20:80;
}
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
###创建反向缓存代理日志保存文件/data/nginx/cache
mkdir -p /data/nginx/cache
(5)修改/etc/nginx/conf.d/default.conf配置文件,添加proxy转发模块
vim /etc/nginx/conf.d/default.conf
###在11行添加下面内容
proxy_cache my_cache;
proxy_cache_key $request_uri;
proxy_cache_valid 200 5m;
add_header Nginx-Cache-Status $upstream_cache_status;
proxy_pass http://web_server;
(6)重启nginx服务
nginx -t
systemctl restart nginx
systemctl status nginx
netstat -lntp | grep nginx
3.2 nginx服务端配置
###关闭和禁止防火墙开机自启功能
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
(1)安装nginx服务
cd /etc/yum.repos.d
rz -E
#nginx.repo
yum -y install nginx
(2)制作nginx服务的网页根目录数据内容
cd /usr/share/nginx/html
echo '<h1>IP:192.168.80.30,GZY like mygirl!!!</h1>' > test.html
###另一服务端的网页根目录
echo '<h1>IP:192.168.80.20,GZY like DZG520!!!</h1>' > test.html
(3)修改/etc/nginx/nginx.conf配置文件,关闭长连接保持功能
vim /etc/nginx/nginx.conf
###在第27行关闭nginx服务的长连接保持功能
keepalive_timeout 0;
(4)启动nginx服务
systemctl restart nginx
systemctl enable nginx
systemctl status nginx
netstat -lntp | grep nginx
3.3 客户端验证访问
http://192.168.80.40/test.html
再次重启nginx反向代理服务器后,进行访问验证;
systemctl restart nginx
查看nginx反向代理缓存的日志文件信息;
cd /data/nginx/cache/c/97