簡介
Tinyproxy 是一款輕量級 HTTP 代理服務器,使用最少的資源,非常適合硬件有限的系統。儘管體積小,但它可以處理大量流量,而不會出現明顯的性能問題。旨在處理簡單的代理任務。它通常用於路由網絡流量以保護隱私、緩存或訪問受限資源。
它的設計初衷是快速而小巧,是嵌入式部署等用例的理想解決方案。
Tinyproxy佔用空間小,並且只需要很少的系統資源。使用 glibc 時,內存佔用大約為2 MB, CPU負載隨着同時連接的數量線性增加(取決於連接的速度)。因此,Tinyproxy 可以在較舊的機器上運行,也可以在基於 Linux 的寬帶路由器等網絡設備上運行,而不會對性能產生任何明顯影響。
安裝
Debian/Ubuntu:
sudo apt update
sudo apt install tinyproxy
CentOS/RHEL/Fedora:
sudo yum install tinyproxy
sudo dnf install tinyproxy
MacOS
brew install tinyproxy
從 github 拉取源碼後手動編譯
./autogen.sh
./configure
make
make install
編譯選項
--enable-debug:啓用完整的調試支持--enable-xtinyproxy:編譯對XTinyproxy標頭的支持--enable-filter:允許Tinyproxy過濾掉某些域名和URL--enable-upstream:啓用上游代理支持--enable-transparent:允許將Tinyproxy用作透明代理守護程序--enable-reverse:啓用反向代理支持--with-stathost=HOST:設置統計主機的默認名稱
啓動運行
啓動 tinyproxy
systemctl start tinyproxy
設置開機自啓動
systemctl enable tinyproxy
查看運行狀態
systemctl status tinyproxy
如何配置 tinyproxy?
tinyproxy 配置文件位於 /etc/tinyproxy/tinyproxy.conf
設置 tinyproxy 監聽傳入連接的端口(默認值:8888)
Port 8888
設置 tinyproxy 綁定到的網絡接口(例如,localhost 僅供本地使用):
Listen 127.0.0.1:8888
指定 tinyproxy 應將傳入連接綁定到哪個本地網絡接口
# for IPv4
Bind 192.168.1.100
# for IPv6
Bind 2001:db8::1
# 綁定到本機
Bind 127.0.0.1
Port、Listen、Bind 比較
Port僅綁定端口Bind僅綁定網絡接口或IP地址Listen可以同時綁定IP地址和端口,一步到位Listen的優先級最高,會覆蓋Port指定的端口
指定哪些 IP 地址可以使用代理
Allow 192.168.1.0/24
設置調試的日誌級別
可用的級別有:Critical、Error、Warning、Notice、Connect、Info
LogLevel Info
啓用基本身份驗證來限制訪問
客户端在設置代理連接時需要輸入用户名和密碼
BasicAuth username password
修改代理髮送的標頭
AddHeader X-Proxy-Name "Tinyproxy"
通過創建過濾器列表來阻止指定的域名或URL
# 配置過濾器文件的位置
Filter "/etc/tinyproxy/filter"
在 /etc/tinyproxy/filter 文件配置示例:
可以使用基本正則表達式
facebook.com
example.com
# 精確過濾 cnn.com
^cnn\.com$
# 過濾 cnn.com 的所有子域名,但不過濾 cnn.com 本身
.*\.cnn.com$
# 過濾任何包含 cnn.com 的域名,例如
cnn\.com
# 過濾以 cnn.com 結尾的任何域名
cnn\.com$
# 過濾所有以 adserver 開頭的域名
^adserver
將 tinyproxy 作為透明代理運行
TransparentProxy On
使用 iptables 重定向流量
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j
REDIRECT --to-port 8888
tinyproxy 使用上游代理,將請求轉發到另一個代理服務器上
Upstream http proxy.example.com:8080
Upstream https proxy.example.com:8443
把 tinyproxy 作為反向代理服務器
ReversePath "/api" "http://backend-server.local/"
配置 tinyproy 只作為反向代理服務器
關閉正常代理
ReverseOnly Yes
使 tinyproxy 使用 cookie 來跟蹤反向代理映射
ReverseMagic Yes
設置 tinyproxy 的 PID 文件位置
PidFile "/var/run/tinyproxy/tinyproxy.pid"
指定 tinyproxy 在關閉空閒連接之前應等待的時間。
Timeout 600
限制同時連接到 tinyproxy 的客户端數量
MaxClients 100
啓用 HTTPS 連接支持
ConnectPort 443
啓用匿名模式來隱藏內部網絡信息
Anonymous "headers"
查看 tinyproxy 日誌
tail -f /var/log/tinyproxy/tinyproxy.log
使用 debug 模式啓動 tinyproxy
sudo tinyproxy -d -c /etc/tinyproxy/tinyproxy.conf
設置 tinyproxy 的日誌文件位置
LogFile /var/log/tinyproxy.log
添加一個包含客户端 IP 地址的標頭 X-Tinyproxy
XTinyproxy Yes
查看 tinyproxy 的版本
tinyproxy -v
資源
- GitHub源碼:https://github.com/tinyproxy/tinyproxy
- 發行版資源:https://github.com/tinyproxy/tinyproxy/releases
- 官網:https://tinyproxy.github.io