环境规划

squid服务器

系统及内核:CentOS7.9
squid软件版本:squid4.15
内存:4G以上
硬盘容量:2T以上
ip地址:192.168.30.219

web服务器

安装http服务并创建测试页面
ip地址:192.168.30.118
软件版本:apache2.4.67

客户测试机:

安装浏览器
ip地址:192.168.30.116

squid安装

安装前置依赖

yum install -y gcc gcc-c++ gcc-gnat libgcc libgcc.i686 glibc-devel bison flex texinfo

编译安装

解压

cd /usr/local/squid
tar -xzvf squid-4.15.tar.gz -C /usr/src/
cd /usr/src/squid-4.15/

预编译

./configure \
--prefix=/usr/local/squid \
--sysconfdir=/etc \
--enable-arp-acl \
--enable-linux-netfilter \
--enable-linux-tproxy \
--enable-async-io=100 \
--enable-err-language="Simplify_Chinese" \
--enable-underscore \
--enable-poll \
--enable-gnuregex

选项说明:
–sysconfdir=/etc #单独将配置文件修改到其他目录
–enable-arp-acl #可以在规则中设置通过客户端MAC进行管理,防止IP欺骗
–enable-linux-netfilter #使用内核过滤
–enable-linux-tproxy #支持透明代理(这个很重要,否则后面透明代理无法实现)
–enable-async-io=100 #异步IO,提升存储性能
–enable-err-language=“Simplify_Chinese” #错误信息的显示语言
–enable-underscore #允许URL中有下划线
–enable-poll #使用Poll()模式,提升性能
–enable-gnuregex #使用GNU正则表达式
编译安装

make -j `nproc` && make install ; echo $?

安装后基本设置

1、优化可执行文件路径(任意位置直接使用squid相关的命令)

 ln -s /usr/local/squid/sbin/* /usr/local/sbin/

2、建程序用户和组

useradd -M -s /sbin/nologin squid

3、给安装目录设置权限属性

 chown -R squid.squid /usr/local/squid/var/
chmod -R 755 /usr/local/squid/var

4、squid服务的配置文件位于/etc/squid.conf

vim /etc/squid.conf
在配置文件末尾添加:
cache_effective_user squid #添加指定程序用户
cache_effective_group squid #添加指定账号基本组

程序初始化及启动

1、检查配置文件语法

squid -k parse

#2、初始化缓存目录

squid -z

#3、启动Squid服务

squid

#4、查看服务启动

netstat -ntap | grep squid

#5、squid 服务脚本
为了使 Squid 服务启动、停止、重载等操作更加方便,可以编写 squid 服务脚本,并使用 chkconfig 和service 工具进行管理。

cat /etc/init.d/squid
#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
case "$1" in
start)
netstat -natp | grep squid &> /dev/null
if [ $? -eq 0 ]
then
echo "squid is running"
else
echo "正在启动 squid..."
$CMD
fi
;;
stop)
kill -9 `expr $(cat $PID) + 2`
;;
status)
[ -f $PID ] &> /dev/null
if [ $? -eq 0 ]
then
netstat -natp | grep squid
else
echo "squid is not running"
fi
;;
restart)
$0 stop &> /dev/null
echo "正在关闭 squid..."
$0 start &> /dev/null
echo "正在启动 squid..."
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo "用法:$0{start|stop|status|reload|check|restart}"
;;
esac
chmod +x /etc/init.d/squid #添加执行权限
chkconfig --add squid #使用 chkconfig 管理
chkconfig --level 35 squid on #设置开机启动

接着我们根据以上的前置步骤继续部署传统代理服务器

构建传统代理服务器

服务器说明

主机 IP地址 主要服务器
centos-squid 192.168.30.219 squid服务
centod-apache 192.168.30.118 httpd服务
windows10 192.168.30.116 客户机

设置配置文件

修改配置文件,在配置传统代理时,需要添加 http_access allow all 访问策略,允许
任意客户机使用代理。除此以外还要设置 reply_body_max_size 项,其他参数保持默认:

http_access allow all #允许任意客户机使用代理
http_port 3128 #使用 3128 端口
cache_mem 64 MB #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的 WEB对象,容量最好为 4 的倍数,单位为 MB,建议设为物理内存的 1/4
reply_body_max_size 10 MB #允许用户下载的最大文件大小,以字节为单位。默认设置 0 表示不进行限制
maximum_object_size 4096 KB #允许保存到缓存空间的最大对象大小,以 KB 为单位,超过大小限制的文件将不被缓存,而是直接转发给用户

整理好的配置文件全文如下,直接复制即可使用(注意在ACL规则中修改自己需要放行或者禁止的网段):

#======================
#基础信息
#======================
visible_hostname squid

#======================
#监听端口(传统代理)
#======================
http_port 3128

#======================
#ACL 定义
#======================
acl SSL_ports port 443
acl Safe_ports port 80 443 21 70 210 1025-65535
acl CONNECT method CONNECT

acl localnet src 10.0.0.0/8
acl localnet src 172.16.0.0/12
acl localnet src 192.168.0.0/16

#======================
#访问控制(非常重要)
#======================
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow localhost
http_access allow localnet
http_access deny all

#======================
#缓存设置
#======================
cache_mem 64 MB
maximum_object_size 4096 KB
minimum_object_size 0 KB

cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256

reply_body_max_size 10 MB

#======================
#刷新策略
#======================
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

#======================
#日志
#======================
access_log /usr/local/squid/var/logs/access.log
cache_log  /usr/local/squid/var/logs/cache.log
pid_filename /usr/local/squid/var/run/squid.pid
#======================
#管理接口
#======================
http_access allow localhost manager
http_access deny manager

#======================
#崩溃目录
#======================
coredump_dir /usr/local/squid/var/cache/squid

http服务器

http服务器使用我们之前搭建的lamp即可,或者在另一台机器上简单部署一个nginx或者apache也可以:

yum -y install nginx
nginx
ps aux | grep nginx

http 服务器默认首页配置

配置 Nginx 的默认首页

vim /usr/share/nginx/html/index.html

cat /usr/share/nginx/html/index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Welcome to CentOS</title>
<meta charset="UTF-8" />
</head>
<body>
<h1> test 测试 squid </h1>
<h2> test </h2>
<h3> test </h3>
<h4> test </h4>
</body>
</html>

测试

以下使用之前的LAMP架构做测试
http服务器IP为192.168.30.118
在edge或chrome浏览器中打开代理
在这里插入图片描述
在这里插入图片描述
在浏览器中访问http服务器IP
在这里插入图片描述

查看日志

然后查看http服务器的日志记录和squid服务器的日志记录
squid服务器日志如下
在这里插入图片描述
http服务器日志如下
在这里插入图片描述

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐