东台网站制作,辽宁大连最新消息今天,做网站需要营业执照嘛,华阳路街道网站建设参考#xff1a;大部分摘自此文#xff0c;做了少部分修改
Squid 是一个功能全面的缓存代理服务器#xff0c;它支持著名的网络协议像 HTTP#xff0c;HTTPS#xff0c;FTP 等等。将 Squid 放在网页服务器的前端#xff0c;通过缓存重复请求#xff0c;过滤网络流量等大部分摘自此文做了少部分修改
Squid 是一个功能全面的缓存代理服务器它支持著名的网络协议像 HTTPHTTPSFTP 等等。将 Squid 放在网页服务器的前端通过缓存重复请求过滤网络流量等可以极大地提高服务器的性能。
这篇指南将会讲解如何在 CentOS 7 上建立 Squid并且配置火狐和 Google 浏览器来使用这个代理服务器。
一、在 CentOS 上安装 Squid
Squid 软件包包含在默认的 CentOS 7 源仓库中。想要安装它以 sudo 用户身份运行下面的命令
yum install squid -y
一旦安装完成启动并开启 Squid 服务
service squid start
想要验证安装是否成功输入下面的命令将会打印出服务的状态
service squid status
● squid.service - Squid caching proxyLoaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)Active: active (running) since Sat 2019-07-13 16:47:56 UTC; 12s ago
...
二、配置 Squid
Squid 通过编辑 /etc/squid/squid.conf 文件进行配置。新增文件可以使用include指令添加到配置文件中。
在做任何修改之前使用cp命令备份原来的配置文件
cp /etc/squid/squid.conf{,.orginal}
想要编辑文件使用文本编辑器打开它
vim /etc/squid/squid.conf
默认情况下Squid 被配置成在服务器所有网络接口上监听端口3128。
如果你想修改端口号并且设置监听接口定位到 http_port 处并且指定接口 IP 地址和新端口。如果没有接口指定Squid 将监听所有网络接口。
/etc/squid/squid.conf
# Squid normally listens to port 3128
http_port IP_ADDR:PORT
在所有接口上和默认端口上运行 Squid 对大部分用户都很适用。
你可以使用 Access Control Lists (ACLs)来控制 Squid 服务器的访问。
默认情况下Squid 仅仅允许从本地主机和本地网络来的访问。
如果所有将要使用代理服务器的客户端都有一个固定 IP 地址你可以创建一个 包含允许 IP 地址的 ACL。
不用在主要配置中添加 IP 地址我们可以创建一个新配置文件用来配置地址 /etc/squid/allowed_ips.txt
192.168.33.1
# All other allowed IPs
一旦完成打开主要配置文件并且创建一个新的 ACL 命名为allowed_ips,并且使用http_access指令允许它访问 /etc/squid/squid.conf
# ...
acl allowed_ips src /etc/squid/allowed_ips.txt
# ...
http_access allow localnet
http_access allow localhost
http_access allow allowed_ips
# And finally deny all other access to this proxy
http_access deny all
这个http_access规则的顺序很重要。确认你在http_access deny all之前添加了这一行。
http_access指令类似于防火墙规则。Squid 从上到下读取规则并且后面匹配的规则不会被处理。
不管你对配置文件做了什么修改你需要重新启动 Squid 服务器来使修改生效
service squid restart
三、Squid 设置账号密码进行身份验证
Squid 可以使用不同的后端包括 SambaLDAP 和 HTTP 基本验证来验证用户。
在这个例子中我们配置 Squid 使用基本验证。它是一个简单的验证方法内置在 HTTP 协议中。
我们将使用openssl来生成密码并且附加username:password对到文件/etc/squid/htpasswd文件中并且显示出来(密码只能设置 8 位超过 8 位会忽略超出的)
printf USERNAME:$(openssl passwd -crypt PASSWORD)\n | sudo tee -a /etc/squid/htpasswd
例如创建一个用户名称为mike,并且密码为Pz$lPk76,你将要运行
printf mike:$(openssl passwd -crypt Pz$lPk76)\n | sudo tee -a /etc/squid/htpasswd
mike:2nkgQsTSPCsIo
下一步是配置 Squid 去启用 HTTP 基本验证并且使用这个文件。
打开主要配置文件添加下面的内容 /etc/squid/squid.conf
...
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost# 自己添加的部分 start
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/htpasswd
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
# 自己添加的部分 end# And finally deny all other access to this proxy
http_access deny all
...
前面三行我们创建了一个 ACL 名称为 authenticated, 最后一行允许通过验证用户访问。
重启 Squid 服务
service squid restart 四、使用 python 的 requests 模块进行验证
import requestsproxy_url http://mike:Pz$lPk76SERVER_IP:PORT
proxy {http: proxy_url, https: proxy_url}
rst requests.get(https://baidu.com, proxies proxy)
print(rst.status_code)
查看日志是否正确
tail -f /var/log/squid/access.log