Tinyproxy:构建一个高性能的轻量代理服务器

一、什么是Tinyproxy?

Tinyproxy是一个轻量级的HTTP/HTTPS代理服务器,它可以在Linux/Unix系统上使用,主要用于网络代理、翻墙、网络加速等功能,占用资源较少,性能优良。

它是由Markus Wanner编写的,使用C语言开发,兼容Squid代理服务器,支持HTTP/1.1协议,完全符合HTTP/1.1规范。

Tinyproxy采用简单的配置,方便运维,且没有依赖环境,可以跨平台部署。

二、Tinyproxy的基本使用

在Linux系统上,可以通过以下步骤安装Tinyproxy

# Ubuntu/Debian系统
sudo apt update
sudo apt install tinyproxy

# CentOS/RHEL系统
sudo yum update
sudo yum install tinyproxy

在安装好Tinyproxy后,需要进行配置,配置文件路径一般在/etc/tinyproxy/tinyproxy.conf,修改以下参数:

# 允许的代理访问IP
Allow 123.123.123.123

# 允许的代理访问端口
Allow 8888

# 不允许代理访问的IP
Deny 192.168.1.1

# 日志文件路径
LogFile "/var/log/tinyproxy/tinyproxy.log"

# 最大客户端并发请求数
MaxClients 100

# 代理监听IP及端口
Listen 127.0.0.1

# 实现匿名代理
Anonymous "yes"

配置完成后,重启Tinyproxy服务,即可开始使用。

例如,使用wget下载一个HTTP站点:

# 直接访问HTTP站点
wget http://example.com/index.html

# 通过http代理访问HTTP站点
http_proxy=http://127.0.0.1:8888 wget http://example.com/index.html

或者使用curl工具测试:

# 直接访问HTTP站点
curl http://example.com/index.html

# 通过http代理访问HTTP站点
curl http://example.com/index.html --proxy http://127.0.0.1:8888

三、Tinyproxy的高级使用

1、SSL隧道代理

当使用Tinyproxy代理HTTPS请求时,需要打开SSL隧道代理,配置中需要开启ConnectPort,将HTTPS请求转发给目标服务器。

修改/etc/tinyproxy/tinyproxy.conf配置文件为:

# 允许所有代理访问IP
Allow 0.0.0.0/0

# 允许所有代理访问端口
Allow CONNECT

# 允许所有代理使用SSL隧道代理
ConnectPort 443

# 使用SSL隧道代理时最大客户端连接数
MaxConnectRetries 3

# SSL隧道代理日志文件路径
ConnectPortLogFile "/var/log/tinyproxy/tinyproxy-ssl.log"

重启Tinyproxy服务后,可以使用以下命令测试:

$ openssl s_client -connect example.com:443 -proxy 127.0.0.1:8888

随后我们便可以使用SSL代理访问HTTPS站点了。

2、限制代理访问

在实际使用中,需要限制代理访问,避免被滥用。可以通过Tinyproxy支持的FilterFilterURLs来做到。

修改/etc/tinyproxy/tinyproxy.conf配置文件为:

# 允许IP段访问(例如:192.168.1.0/24)
Allow 192.168.1.0/24

# 不允许的IP
Deny 192.168.1.1

# 限制代理访问的URL(例如:example.com)
Filter "/example/"

# 限制代理访问的关键字(例如:example)
FilterURLs "example"

修改完成后,重启Tinyproxy服务,即可生效。

3、实现用户认证

在有一些敏感操作的环境下,需要做好用户认证,确保只有授权用户才可以使用代理服务。可以通过Tinyproxy扩展模块tinyproxy-auth进行实现。

在使用之前,需要首先安装tinyproxy-auth模块:

sudo apt install tinyproxy-auth

安装完成后,修改/etc/tinyproxy/tinyproxy.conf配置文件为:

# 开启认证模块
AuthConfig /etc/tinyproxy/tinyproxy-auth.conf

# 定义认证模式为basic(其他模式还有ntlm)
AuthUserFile "/etc/tinyproxy-htpasswd"
AuthUserFileGroup "nogroup" # 设置用户认证组

# 允许使用代理访问的IP
Allow 192.168.1.0/24

# 不允许使用代理访问的IP
Deny 192.168.1.1

# 设置代理监听IP地址和端口号
Listen 127.0.0.1

# 隐藏客户端IP地址
Anonymous "yes"

修改完成后,需要配置tinyproxy-auth认证文件,/etc/tinyproxy/tinyproxy-auth.conf的内容如下:

tinyproxy_auth -m basic -f /etc/tinyproxy-htpasswd

然后生成认证用户:htpasswd -c /etc/tinyproxy-htpasswd user1,之后便可以测试。

四、Tinyproxy的优化

1、减小DNS解析时间

可以在Tinyproxy配置文件中添加Upstream参数,将DNS服务器设置为本地的DNSServer,防止因需要查询外部DNS服务器而造成的延迟。

修改/etc/tinyproxy/tinyproxy.conf配置文件为:

# 设置本地DNS服务器(例如:127.0.0.1:53)
Upstream 127.0.0.1:53

2、限制最大并发连接数

如果Tinyproxy并发请求较多,可能会造成崩溃等问题,可以通过设置MaxClients来限制最大并发连接数。

修改/etc/tinyproxy/tinyproxy.conf配置文件为:

# 设置最大并发连接数(例如:100)
MaxClients 100

3、缓存代理

可以通过设置Tinyproxy为缓存代理来提升性能和速度,减少网络带宽使用。

修改/etc/tinyproxy/tinyproxy.conf配置文件为:

# 允许缓存(例如:1024MB)
MaxCacheSize 1024

# 设置缓存路径
CacheDir "/var/cache/tinyproxy/"

# 允许缓存未认证的内容
AllowUnauthenticatedCache "yes"

# 允许缓存访问过的内容
AllowCaching "yes"

# 将较久未使用的缓存替换出
MinSpareServers 5

# 将较新使用的缓存保留
MaxSpareServers 10

# 设置最大并发客户端请求数
MaxClients 100

# 缓存数据时最大内存使用量(例如:10MB)
MaxMemObject 10000

五、总结

本文介绍了Tinyproxy的基本使用、高级使用及优化方法。

Tinyproxy是一个轻量级的HTTP/HTTPS代理服务器,具有占用资源较少、性能优良的特点,可以在Linux/Unix系统上使用,主要用于网络代理、翻墙、网络加速等功能。

在使用时需要进行配置,包括代理访问IP、端口、日志路径、最大客户端并发请求数、代理监听IP及端口等,也可以通过Tinyproxy扩展模块进行SSL隧道代理、用户认证等功能。

此外,可以通过减小DNS解析时间、限制最大并发连接数、设置缓存代理等方法优化Tinyproxy的性能和速度。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/189865.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-29 13:52
下一篇 2024-11-29 13:52

相关推荐

  • leveldb和unqlite:两个高性能的数据库存储引擎

    本文将介绍两款高性能的数据库存储引擎:leveldb和unqlite,并从多个方面对它们进行详细的阐述。 一、leveldb:轻量级的键值存储引擎 1、leveldb概述: lev…

    编程 2025-04-28
  • Mapster:一个高性能的对象映射库

    本文将深入介绍furion.extras.objectmapper.mapster,一个高性能的对象映射库,解释它是如何工作的以及如何在你的项目中使用它。 一、轻松地实现对象之间的…

    编程 2025-04-28
  • 全面解析nodeps: 一个高性能node.js依赖注入框架

    Node.js作为一款高性能的JavaScript运行环境,得到了众多开发者的青睐。而依赖注入则成为了Node.js开发中不可或缺的一部分。 一、快速了解nodeps Nodeps…

    编程 2025-04-24
  • Compacted:一个高性能的Golang缓存库

    一、简介 Compacted是一个使用Golang编写的缓存库,旨在提供高性能的内存缓存功能。相对于其他常见的缓存库,Compacted在内存使用和性能方面都做了一定的优化。 缓存…

    编程 2025-04-23
  • AMD Ryzen 7 Pro 4750U:一款全面的高性能移动处理器

    一、性能提升 AMD Ryzen 7 Pro 4750U是一款内置8核16线程的移动处理器。与前一代处理器相比,它的性能提升了许多。首先,基于7nm制程工艺设计的这款处理器提供了更…

    编程 2025-04-23
  • 深入了解socks5代理服务器

    一、什么是socks5代理服务器 socks5代理服务器是一种网络传输协议,用于在客户端和服务器之间转发数据。它可以通过代理服务器来连接网络,隐藏用户的真实IP地址和身份,保护用户…

    编程 2025-04-22
  • 飞腾CPU——打造高性能计算机的核心芯片

    一、飞腾CPU介绍 飞腾CPU是中国自主研发的高性能计算应用处理器,是中国在CPU领域的一个重要突破。它具有高性能、低功耗、高可靠性和高安全性等优势,被广泛应用于高性能计算、大数据…

    编程 2025-04-22
  • 如何架设一个可用的HTTP代理服务器

    一、基础概念 HTTP代理服务器是一种服务器,它可以代替客户端向网络服务器发送请求并返回响应。HTTP代理通常用于访问受限的网站、监视网络流量或提高访问速度。 HTTP代理可以分为…

    编程 2025-04-22
  • MinionNginx代理服务器

    一、MinionNginx代理服务器概述 MinionNginx代理服务器是一个基于Nginx的高性能HTTP和反向代理服务器,它可以提供HTTP代理、缓存服务、SSL终止、负载均…

    编程 2025-04-12
  • 使用lvglstm32打造高性能嵌入式UI界面

    一、简介 lvglstm32是基于lvgl嵌入式UI库和STM32系列单片机的一款开源项目。它能够实现高性能的图形界面显示及用户交互,并充分利用STM32硬件特性,提供一系列应用场…

    编程 2025-04-12

发表回复

登录后才能评论