Stories

Detail Return Return

Linux tinyproxy 使用教程 - Stories Detail

簡介

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

PortListenBind 比較

  • Port 僅綁定端口
  • Bind 僅綁定網絡接口或IP地址
  • Listen 可以同時綁定IP地址和端口,一步到位
  • Listen 的優先級最高,會覆蓋 Port 指定的端口

指定哪些 IP 地址可以使用代理

Allow 192.168.1.0/24

設置調試的日誌級別

可用的級別有:CriticalErrorWarningNoticeConnectInfo

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

設置 tinyproxyPID 文件位置

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
user avatar guoduandemuer Avatar koogua Avatar phpercode Avatar 49u7s8yz Avatar witersen Avatar y_luoe_hai_61a734cbf3c94 Avatar hex Avatar
Favorites 7 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.