前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >代理服务器-Squid介绍和应用

代理服务器-Squid介绍和应用

作者头像
运维小路
发布2025-04-26 21:09:27
发布2025-04-26 21:09:27
32200
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行

我们上一章介绍了Web服务器,其中以Nginx为主,本章我们来讲解几个代理软件:Squid,Haproxy,LVS,FRP(内网穿透)。

前面我们在介绍Web服务器的时候,介绍过Nginx的正向代理,实际上如果要使用正向代理,一般不会使用Nginx来做,而是使用更专业的代理软件:Squid来实现。当然Squid实际上有很多功能,我们这里主要介绍他的正向代理(或者叫透明代理)。

在讲解代理之间,我们先普及几个Linux系统里面关于代理的几个参数或者说环境变量:

http_prxoy:当你尝试通过HTTP访问网络资源时,你的请求会首先被发送到这个指定的代理服务器。格式通常是:http_proxy=http://proxy-server:port如果代理服务器需要认证,可能还需要提供用户名和密码,如:http_proxy=http://username:password@proxy-server:port。

https_proxy:和http_类似,只是请求的是https。

默认这2个参数在未配置之前,是找不到这2个环境变量,如果配置以后,则对应的请求都会先转发到对应的代理服务器上面,然后从代理服务器在转发出去。

Squid部署

代码语言:javascript
代码运行次数:0
运行
复制
yum -y install squid
systemctl start squid
systemctl enable squid

Squid配置文件介绍

普通部署核心就是修改允许通过的ip和端口。

代码语言:javascript
代码运行次数:0
运行
复制
# 定义了名为 localnet 的来源 IP 地址段,供后面引用
acl localnet src 10.0.0.0/8         # RFC1918 可能的内部网络
acl localnet src 172.16.0.0/12      # RFC1918 可能的内部网络
acl localnet src 192.168.0.0/16     # RFC1918 可能的内部网络
acl localnet src fc00::/7           # RFC 4193 本地私有网络范围
acl localnet src fe80::/10          # RFC 4291 链路本地(直接连接)机器
# 定义目标端口名称,供后面引用
acl SSL_ports port 443              # HTTPS 端口
acl Safe_ports port 80              # HTTP
acl Safe_ports port 21              # FTP
acl Safe_ports port 443             # HTTPS
acl Safe_ports port 210             # WAIS
acl Safe_ports port 1025-65535      # 未注册端口
acl Safe_ports port 280             # HTTP-MGMT
acl Safe_ports port 488             # GSS-HTTP
acl Safe_ports port 591             # FileMaker
acl Safe_ports port 777             # 多语言 HTTP
# 定义 CONNECT 方法的 ACL
acl CONNECT method CONNECT
# 拒绝非目标端口的访问
http_access deny !Safe_ports        # 只允许上面定义的目标端口通过
http_access deny CONNECT !SSL_ports # 只允许 CONNECT 方法访问 SSL 端口
# 只允许来自本地管理请求
http_access allow localhost manager # 允许本地管理请求
http_access deny manager            # 拒绝其他管理请求
# 允许来自上面定义的 IP 地址段和本机使用代理,其他都拒绝
http_access allow localnet          # 允许 localnet 定义的地址段
http_access allow localhost         # 允许本机访问
http_access deny all                # 拒绝所有其他请求
# 监听默认端口
http_port 3128
# 崩溃信息存储目录
coredump_dir /var/spool/squid
# 缓存刷新策略
refresh_pattern ^ftp:               1440  20%  10080
refresh_pattern -i (/cgi-bin/|\?)   0     0%   0
refresh_pattern .                   0     20%  4320
代码语言:javascript
代码运行次数:0
运行
复制

使用Squid

代码语言:javascript
代码运行次数:0
运行
复制
#临时定义,永久定义需要 添加到环境变量里面 
export http_proxy=192.168.31.120:3128
export https_proxy=192.168.31.120:3128
代码语言:javascript
代码运行次数:0
运行
复制
#成功使用的网络链接 
tcp 0  0 192.168.31.121:39314    192.168.31.120:3128     ESTABLISHED 6846/wget 
代码语言:javascript
代码运行次数:0
运行
复制
#成功的日志
1744359965.994    723 192.168.31.198 TCP_TUNNEL/200 5793 CONNECT objects.githubusercontent.com:443 - HIER_DIRECT/185.199.108.133 -
代码语言:javascript
代码运行次数:0
运行
复制
#拒绝的日志
1744360105.239      0 192.168.31.198 TCP_DENIED/403 3922 CONNECT dlcdn.apache.org:443 - HIER_NONE/- text/html

这里的代码和http的代码是一样的,200是成功,403是没权限(失败)。

案例

某私有云有一个yum服务器,为内网服务器提供yum源。但是由于这个机器是不通外网的,所以他没有办法去外网同步资源,这个时候我们就可以找一台具有公网能力,并且和这个yum服务器互通的机器,然后在这个机器部署Squid软件,并根据需求配置对于的ip和端口限制,这样我们的yum服务器只需要添加对于的http_proxy或者https_proxy代理,他就具有具备访问公网的能力。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档