如何在 CentOS 7 上安装和配置 Squid 代理

2023-11-15

Squid 是一个功能齐全的缓存代理,支持流行的网络协议,如 HTTP、HTTPS、FTP 等。将 Squid 放置在 Web 服务器前面可以通过缓存重复请求、过滤 Web 流量和访问地理限制内容来极大地提高服务器性能。

本教程介绍如何在 CentOS 7 上设置 Squid 以及如何配置 Firefox 和 Google Chrome Web 浏览器以使用代理。

在 CentOS 上安装 Squid#

Squid 软件包包含在默认的 CentOS 7 存储库中。要安装它,请运行以下命令:须藤用户 :

sudo yum install squid

安装完成后,启动并启用 Squid 服务:

sudo systemctl start squidsudo systemctl enable squid

要验证安装是否成功,请键入以下命令,该命令将打印服务状态:

sudo systemctl status squid
● squid.service - Squid caching proxy
   Loaded: 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 可以通过编辑/etc/squid/squid.conf文件。可以使用“include”指令包含带有配置选项的其他文件。

在进行任何更改之前,请使用以下命令备份原始配置文件cp命令:

sudo cp /etc/squid/squid.conf{,.orginal}

要编辑该文件,请在您的文本编辑器 :

sudo nano /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 应该没问题。

您可以使用访问控制列表 (ACL) 来控制对 Squid 服务器的访问。

默认情况下,Squid 只允许从 localhost 和 localnet 进行访问。

如果将使用代理的所有客户端都有静态 IP 地址,您可以创建一个包含允许的 IP 的 ACL。

我们将创建一个新的专用文件来保存 IP,而不是在主配置文件中添加 IP 地址:

/etc/squid/allowed_ips.txt
192.168.33.1
# All other allowed IPs

完成后打开主配置文件并创建一个名为的新 ACLallowed_ips(第一行突出显示)并允许使用该 ACL 访问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.

The http_access指令的工作方式与防火墙规则类似。 Squid从上到下读取规则,当一条规则匹配时,下面的规则不会被处理。

每当您更改配置文件时,您都需要重新启动 Squid 服务才能使更改生效:

sudo systemctl restart squid

鱿鱼认证#

Squid 可以使用不同的后端,包括Samba、LDAP 和 HTTP 对经过身份验证的用户进行基本身份验证。

在此示例中,我们将配置 Squid 以使用基本身份验证。它是一种内置于 HTTP 协议中的简单身份验证方法。

我们将使用openssl生成密码并附加username:password配对到/etc/squid/htpasswd文件与tee命令如下图:

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
# ...
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 localnet
http_access allow localhost
http_access allow authenticated
# And finally deny all other access to this proxy
http_access deny all

通过前三行突出显示的行,我们将创建一个名为的新 ACLauthenticated。最后突出显示的行允许访问经过身份验证的用户。

重新启动鱿鱼服务:

sudo systemctl restart squid

配置防火墙#

如果您正在运行firewall你需要打开端口3128。为此,请运行以下命令:

sudo firewall-cmd --permanent --add-port=3128/tcpfirewall-cmd --reload
如果 Squid 在另一个非默认端口上运行,您需要允许该端口上的流量。

配置您的浏览器以使用代理#

现在您已经设置了 Squid,最后一步是配置您的首选浏览器以使用它。

Firefox #

以下步骤对于 Windows、macOS 和 Linux 是相同的。

  1. 单击右上角的汉堡包图标打开 Firefox 的菜单:

  2. 单击⚙ Preferences link.

  3. 向下滚动到Network Settings部分并单击Settings... button.

  4. 将打开一个新窗口。

    • 选择Manual proxy configuration单选按钮。
    • 在中输入您的 Squid 服务器 IP 地址HTTP Host场和3128 in the Port field.
    • 选择Use this proxy server for all protocols复选框。
    • 单击OK按钮保存设置。

至此,您的 Firefox 已配置完毕,您可以通过 Squid 代理浏览互联网。要验证它,请打开google.com,输入“what is my ip”,您应该会看到您的 Squid 服务器 IP 地址。

要恢复为默认设置,请转至Network Settings,选择Use system proxy settings单选按钮并保存设置。

还有几个插件可以帮助您配置 Firefox 的代理设置,例如狐狸代理 .

谷歌浏览器#

Google Chrome 使用默认的系统代理设置。您可以使用插件,例如开关欧米茄或从命令行启动 Chrome 网络浏览器。

要使用新配置文件启动 Chrome 并连接到 Squid 服务器,请使用以下命令:

Linux :

/usr/bin/google-chrome \
    --user-data-dir="$HOME/proxy-profile" \
    --proxy-server="http://SQUID_IP:3128"

macOS :

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
    --user-data-dir="$HOME/proxy-profile" \
    --proxy-server="http://SQUID_IP:3128"

窗户:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" ^
    --user-data-dir="%USERPROFILE%\proxy-profile" ^
    --proxy-server="http://SQUID_IP:3128"

如果配置文件不存在,将自动创建。这样您就可以同时运行多个 Chrome 实例。

要确认代理服务器是否正常工作,请打开google.com,然后输入“我的 ip 是什么”。浏览器中显示的IP应该是您服务器的IP地址。

结论#

您已经学习了如何在 CentOS 7 上安装鱿鱼并配置浏览器以使用它。

Squid 是最流行的代理缓存服务器之一。它提高了 Web 服务器的速度,并可以帮助您限制用户对 Internet 的访问。

如果您遇到问题或有反馈,请在下面发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 CentOS 7 上安装和配置 Squid 代理 的相关文章

  • 如何从 Java 系统设置中获取代理设置

    我正在寻找如何在 Windows 下使用 Java 获取系统代理信息的方法 但我只找到了一种方法 但这对我不起作用 public static void main String args throws Throwable System se
  • Android Studio 3.1:代理配置:无法为git操作设置https用户密码

    我最近将 Android Studio 从 3 0 升级到了 3 1 在3 0中 我曾经在中设置代理配置gradle properties 全局属性 文件 其中包括设置systemProp https proxyPassword除其他外 但
  • github 存储库的本地缓存?

    我们使用 github 来管理我们的大量软件环境 我敢打赌 像许多其他组织一样 该存储库的绝大多数流量来自我们的办公室 考虑到这一点 有没有一种方法可以构建给定 github 存储库的本地缓存 但仍然具有云版本的保护 我在缓存代理服务器的模
  • 安装Python时出错

    击中后 make install 我收到以下错误 usr bin install cannot create regular file usr local bin python2 6 Permission denied make altbi
  • 无法使用 git 克隆任何存储库

    我尝试克隆一些存储库 但总是遇到相同的错误 我在哪里可以找到有关此错误的更多信息 错误日志文件或类似的文件 或者也许有人知道可能出了什么问题 git clone http github com creationix nvm git nvm
  • 错误:连接超时:连接

    我将Android Studio 1 5 1的gradle版本从1 5更改为2 10 然后单击立即同步 错误图像 https i stack imgur com E3MVE png但出现以下错误 错误 连接超时 连接 如果您使用 HTTP
  • 无法拦截Android应用程序的流量

    最近 我正在尝试测试和拦截来自开发的应用程序的流量罗莫比尔 我设置了一个代理burp 当然 我已经在我的设备上安装了 burp 证书 因此我可以拦截设备上的其他应用程序 但我无法在 burp suite 上看到相关应用程序的流量 相反 该应
  • 在 systemd 服务文件内/内联添加 shell 命令

    我正在运行gunicorn通过 systemd 将服务器作为服务 这是示例service file Unit Description Gunicorn NGINX After network target Service User root
  • Firefox 中的代理设置不会“粘连”

    在家里我们有一个代理服务器 在工作中我们不会 Firefox 在这方面令人恼火 每当我启动它时 它都会默认使用代理服务器 如果我执行 工具 gt 选项 gt 设置 并选择 无代理 则没有问题 但是 如果我关闭 Firefox 并重新启动它
  • mod_mono 在新安装的 centos 上出现 EOF 错误

    我全新安装了 Centos 6 3 已完全更新 我已经从源安装了 mono xsp 和 mod mono 每个包都完美编译 它们都以 usr local mono 前缀安装 因此所有内容都位于 usr local mono 下 我已将 In
  • webpack-dev-server 中的代理 websockets 连接

    是否可以在 webpack 开发服务器中代理 websocket 连接 我知道如何将常规 HTTP 请求代理到另一个后端 但它不适用于 websockets 大概是因为代理配置中的目标以 http 开头 webpack dev server
  • 合并来自 ffmpeg 的两个视频

    我想使用 ffmpeg 将两个 mp4 视频组合成一个 mp4 视频 到目前为止我尝试过的是 ffmpeg i input1 mp4 i input2 mp4 output mp4 但是 每次我获取带有第一个输入的视频编解码器的视频而不是另
  • 为什么 nginx 接受 Host 标头与 server_name 不匹配的请求?

    我有一个这样设置的站点 nginx 作为代理服务器 通过 UNIX 套接字代理为 Django 站点提供服务的 Gunicorn 实例的请求 这是我的 nginx 配置 server listen 80 server name api my
  • 当我在浏览器中访问 Google 或 Google App Engine 等网站时,Google Cloud SDK 出现网络连接问题

    我在 Google App Engine 上创建了一个帐户 然后通过 gcloud init 安装了 google cloud sdk 并收到以下错误 Pick configuration to use 1 Re initialize th
  • 无法在代理后面使用量角器运行 Angular > 2 e2e

    将不胜感激任何帮助 我在windows上运行 我在全球安装了量角器版本5 3 0 在更新网络驱动程序之前我运行 webdriver manager clean 并更新版本如下 webdriver manager 更新 ie32 proxyh
  • 使用节点http代理转发http代理

    我正在使用 node http proxy 库来创建转发代理服务器 我最终计划使用一些中间件来动态修改 html 代码 这就是我的代理服务器代码的样子 var httpProxy require http proxy httpProxy c
  • Node.js 中的 HTTPS 代理服务器

    我正在开发一个node js代理服务器应用程序 我希望它支持HTTP and HTTPS SSL 协议 作为服务器 我目前正在使用node http proxy https github com nodejitsu node http pr
  • CentOS目录结构是树形的吗?

    CentOS 上有相当于树的东西吗 如果你的 Centos 系统上没有安装 tree 无论如何我通常建议服务器设置使用最小安装磁盘 你应该在命令行中输入以下内容 yum install tree y 如果没有安装 那是因为您没有正确的存储库
  • 通过SOCKS代理连接Kafka

    我有一个在 AWS 上运行的 Kafka 集群 我想用标准连接到集群卡夫卡控制台消费者从我的应用程序服务器 应用程序服务器可以通过 SOCKS 代理访问互联网 无需身份验证 如何告诉 Kafka 客户端通过代理进行连接 我尝试了很多事情 包
  • 如何通过 Ruby 中的代理获取带有用户代理和超时的 URL?

    如果我需要通过某些方式获取 URL 我该如何获取 URLproxy 它必须有一个timeout最大 n 秒 和一个用户代理 require nokogiri require net http require rexml document d

随机推荐

  • 使用 cURL 发送电子邮件的分步指南

    cURL 短缺 URL 客户端 是一个开源软件项目 它提供了一个库 libcurl 和一个命令行工具 curl 用于使用各种网络协议传输数据 虽然它通常用于与 HTTP 和 HTTPS 交互 但它也可以处理 SMTP 这是在互联网上发送电子
  • 如何在 Ubuntu 和 Debian 上安装和使用 Imapsync

    Imapsync是一种 IMAP 传输工具 用于将电子邮件从一个 IMAP 服务器复制到另一个 IMAP 服务器 本文将帮助您在 Ubuntu Debian 和 Linuxmint 系统上安装 imapsync 并在两个 IMAP 服务器之
  • Linux 中不存在目录时如何创建

    Linux 是全球数百万用户使用的流行操作系统 使用 Linux 时的一项常见任务是创建和管理目录 在本文中 我们将介绍如何在 Linux 中创建目录 仅当目录尚不存在时 这在编写脚本或执行需要创建多个具有唯一名称的目录的任务时非常有用 使
  • 解决 Flask 中的“AssertionError:视图函数映射正在覆盖现有端点函数”错误

    Flask 是一种广泛使用的用 Python 编写的微型 Web 框架 它因其简单性和为开发人员提供的控制而广受欢迎 但是 与任何其他框架一样 开发人员在使用 Flask 时可能会遇到错误 其中一个错误是 断言错误 视图函数映射正在覆盖现有
  • 如何在 Linux 中打开端口

    在 Linux 操作系统中 端口是用于通过网络发送或接收数据的通信端点 网络端口由数字标识 每个端口号与特定类型的网络服务相关联 例如 端口 80 用于 HTTP 流量 端口 21 用于 FTP 端口 25 用于电子邮件 为了建立网络连接
  • 在 Bash 中使用管道 (|) 运算符

    Bash 脚本是管理和在类 Unix 系统上工作的一个组成部分 管道运算符 是 Bash 脚本工具包中一个非常强大的工具 尽管外观简单 但它是高效命令行操作 简化流程和实现复杂数据操作的基石 本文深入探讨了管道运算符的使用 探讨它是什么 它
  • 如何在 Bash 脚本中获取当前日期和时间

    作为一种脚本语言 Bash 广泛用于系统管理任务和自动化 Bash 脚本中的一项常见任务是获取当前日期和时间 这 date 命令以特定格式返回当前日期和时间 但您也可以使用自定义格式字符串来获取任何格式的日期和时间 在本文中 我们将探讨如何
  • Linux 中的 Uname 命令

    在本文中 我们将介绍uname命令 uname是一个命令行实用程序 可打印有关操作系统名称和系统硬件的基本信息 uname命令 The uname工具最常用于确定处理器架构 系统主机名和内核版本系统上运行 的语法uname命令采用以下形式
  • Linux中的Find命令(查找文件和目录)

    The find命令是 Linux 系统管理员工具库中最强大的工具之一 它根据用户给定的表达式在目录层次结构中搜索文件和目录 并可以对每个匹配的文件执行用户指定的操作 您可以使用find命令根据文件和目录的权限 类型 日期 所有权 大小等搜
  • 如何在 CentOS 7 上安装 Apache Cassandra

    Apache Cassandra 是一款开源 NoSQL 数据库 无单点故障 提供线性可扩展性和高可用性 且不会影响性能 在 Cassandra 中 记录的结构与关系数据库中的表 行和列类似 Apache Cassandra 被许多组织使用
  • 猛击直到循环

    循环是编程语言的基本概念之一 当您想要一遍又一遍地运行一系列命令直到满足特定条件时 循环会很方便 在 Bash 等脚本语言中 循环对于自动执行重复任务非常有用 Bash 脚本中有 3 种基本循环结构 for loop while 循环 an
  • 如何在树莓派上安装 Ubuntu

    Raspberry Pi 是有史以来最受欢迎的单板计算机 它可用于多种用途 如台式电脑 家庭媒体中心 智能 Wi Fi 路由器 自动化系统和游戏服务器 用例是无穷无尽的 如果您的 Raspberry Pi 没有预装 NOOBS 的 SD 卡
  • 如何在 Debian 9 上安装 Python 3.7

    Python 是世界上最流行的编程语言之一 Python 以其简单易学的语法成为初学者和经验丰富的开发人员的绝佳选择 Python 是一种非常通用的编程语言 您几乎可以用它来做任何您想做的事情 编写小脚本 构建游戏 开发网站 创建机器学习算
  • 如何在 Ubuntu Linux 上挂载 exFAT 驱动器

    exFAT 扩展文件分配表 是 Microsoft 专有的文件系统 针对 SD 卡和 USB 闪存驱动器等闪存设备进行了优化 它旨在取代旧的 32 位 FAT32 文件系统 该系统无法存储大于 4 GB 的文件 所有最新版本的 Window
  • 如何在 Ubuntu 18.04 上安装 Slack

    Slack是世界上最受欢迎的协作平台之一 它将您的所有通信汇集在一起 Slack 中的对话按频道组织 您可以为您的团队 项目 主题或任何其他目的创建频道 以保持信息和对话井井有条 您可以搜索频道或消息中发布的所有内容 Slack 还允许您通
  • 如何在 Debian 9 上安装 Skype

    Skype是世界上最受欢迎的通信应用程序之一 可让您免费进行在线音频和视频通话 并以经济实惠的价格拨打全球手机和固定电话 Skype 不是开源应用程序 也不包含在 Debian 存储库中 在本教程中 我们将解释如何在 Debian 9 上安
  • Bash 序列表达式(范围)

    在本文中 我们将介绍 Bash 中序列表达式的基础知识 Bash 序列表达式通过定义范围的起点和终点来生成整数或字符范围 一般与以下组合使用for loops Bash 序列表达式 序列表达式采用以下形式 START END INCREME
  • 如何使用 psql 列出 PostgreSQL 数据库和表

    给药时PostgreSQL在数据库服务器中 您可能执行的最常见任务之一是列出数据库及其表 PostgreSQL 附带了一个交互式工具 称为psql 它允许您连接到服务器并对其运行查询 使用时psql您还可以利用它的元命令 这些命令对于脚本编
  • Linux 中的 Gunzip 命令

    Gunzip 是一个用于解压缩 Gzip 文件的命令行工具 Gzip 是最流行的压缩算法之一 它可以减小文件大小并保留原始文件模式 所有权和时间戳 按照惯例 使用 Gzip 压缩的文件要么是 gz or z扩大 在本教程中 我们将解释如何使
  • 如何在 CentOS 7 上安装和配置 Squid 代理

    Squid 是一个功能齐全的缓存代理 支持流行的网络协议 如 HTTP HTTPS FTP 等 将 Squid 放置在 Web 服务器前面可以通过缓存重复请求 过滤 Web 流量和访问地理限制内容来极大地提高服务器性能 本教程介绍如何在 C