当前位置: 首页 > news >正文

CentOS 安装HTTP代理服务器 Squid

参考:大部分摘自此文,做了少部分修改

Squid 是一个功能全面的缓存代理服务器,它支持著名的网络协议像 HTTP,HTTPS,FTP 等等。将 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 可以使用不同的后端,包括 Samba,LDAP 和 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$lPk76@SERVER_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
http://www.lryc.cn/news/216247.html

相关文章:

  • ubuntu下开发提效的小tips
  • Java反射详解:入门+使用+原理+应用场景
  • PostgreSQL 工具的相关介绍
  • 结合组件库实现table组件树状数据的增删改
  • Microsoft 365 管理自动化
  • unraid 安装并设置 zerotier 内网穿透安装 unraid 局域网内其他设备
  • 如何调试 Dubbo 协议调用过程
  • C++初阶 类和对象(上)
  • SoftwareTest4 - 咋设计一个好的测试用例
  • 自定义 Spring Boot Starter 组件
  • 功率放大器的种类和作用是什么
  • 分析外贸SEO推广流程?网站谷歌SEO优化方法?
  • 前端工程化需要知道的一些知识
  • 默认路由配置
  • Annotorious入门教程:图片注释工具
  • 一台服务器是否能够安装多个SSL证书?
  • 如何使用UDP打洞进行内网穿透
  • 如何滴水不漏的学完C语言?
  • 数据库深入浅出,数据库介绍,SQL介绍,DDL、DML、DQL、TCL介绍
  • 拓世大模型 | 立足行业所需,发力终端,缔造智能无限可能
  • NEFU数字图像处理(3)图像分割
  • 图论问题建模和floodfill算法
  • MySQL - 库的操作
  • 多次kerberos认证服务超时
  • Vuex源码-各原理简单总结
  • vcpkg 使用 cmake 编译C/C++工程代码时指定使用静态库链接编译
  • FlinkCDC系列:数据同步对部分字段的处理,只更新部分字段
  • Linux 包操作 (rpm)
  • Docker中OceanBase挂载过后,删除再启动无限重启的解决办法
  • react中的forwardRef 和memo的区别?