- Squid,一个高性能的代理缓存服务器,支持FTP、gopher、HTTP协议。
Squid,一个缓存Internet 数据的软件,其接收用户的下载申请(作为代理服务器),并自动处理所下载的数据,并返回给客户。
- 当一个用户想要下载一个主页(如QQ:https://qq.com)时,可以向Squid 发出一个申请,让Squid 代替其进行下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户,使用户觉得速度相当快。Squid 可以代理HTTP、FTP、GOPHER、SSL和WAIS等协议并且Squid 可以自动地进行处理,可以根据自己的需要设置Squid,使之过滤掉不想要的东西。
- Squid 是一个跨平台服务,可运行在大多数Unix和OS/2版本的系统之上,已知的可工作的有:
Windows,AIX,Digital Unix,FreeBSD,HP-UX,Irix,Linux,NetBSD,Nextstep,SCO,Solaris
Squid 官网:http://www.squid-cache.org
1. 安装 squid
rpm -qa | grep squid
squid-3.5.20-12.el7.x86_64 // 表示安装过
yum -y install squid // 安装
2. 设置开机自启动 squid
systemctl enable squid.service
3. 配置文件 squid.conf
vim /etc/squid/squid.conf
找到
http_access deny all
在之前添加下面数行内容:注意路径
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm hello-mimvp
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl myproxy proxy_auth REQUIRED
http_access deny !myproxy
http_access allow myproxy
增加2句,隐藏真实ip变成匿名代理,这是squid 3.1的写法
via off
forwarded_for delete
添加后配置如下:
############# start ############
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm hello
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl myproxy proxy_auth REQUIRED
http_access deny !myproxy
http_access allow myproxy
via off
forwarded_for delete
############# end ##############
4. 用户名密码认证 squid
利用 apache 携带的工具 htpasswd 生成密码文件
htpasswd 是apache httpd自带工具,需要先安装 httpd,安装expect便于自动化交互设置密码
yum -y install httpd httpd-devel expect
并添加相应的用户信息
/usr/bin/htpasswd -c /etc/squid/passwd y-guest
根据提示输入密码:qaz123
成功后将会在 /etc/squid/passwd 中写入:
用 cat /etc/squid/passwd 命令查看,显示如下:
y-guest:MsJeP9bZ$BLCJYnpQyFR.dV5SBDxMg0
第一列是用户名,第二列是密码
5. 参数检查和设置缓存
5.1 参数检查
squid -k parse
5.2 设置缓存
vim /etc/squid/squid.conf
去掉下面一行的注释#,否则squid -z无法执行
cache_dir ufs /var/spool/squid 100 16 256
去掉后,初始化缓存
squid -z
[root@MyCloudServer ~]# squid -z
2018/06/22 09:19:08| Squid is already running! Process ID 1065
6. 启动服务 squid
systemctl start squid.service
查看3128已经在运行服务了
netstat -ntpl | grep 3128
显示如下:
[root@MyCloudServer ~]# netstat -ntpl | grep 3128
tcp6 0 0 :::3128 :::* LISTEN 1065/(squid-1)
如果开启了防火墙iptables规则,则还需要在/etc/sysconfig/iptables里添加下面一行,允许3128端口访问:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3128 -j ACCEPT
或者直接使用下面的命令关闭防火墙
systemctl stop firewalld.service
如果使用阿里云、腾讯云、AWS等云服务器搭建Squid,则需要在安全策略里,允许3128端口访问
7. 查看日志 squid
tail -f /var/log/squid/access.log
tail -f /var/log/squid/cache.log
这个时候我们的代理服务器就基本上已经搭建好了,接下来是设置代理测试验证
8.验证生效
8.1 Firefox 插件测试
首先,安装 Proxy Switcher
-
其次,配置代理,如下图:
-
这个时候在去访问网站就会弹出一个输入用户密码的访问了
输入用户名和密码,就是刚才上面设置的,这个时候通过百度搜索ip得到如下图:
大功告成,以上就是基于squid如何搭建http代理服务器的详细过程了!