Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Apache 環境下載伺服器構建實戰:mod_bw 限速 + mod_limitipconn 反盜鏈/限連接

編輯:關於伺服器

需求:在 FreeBSD 6.1 + Apache 2.0.59 上構建下載伺服器,實現**全域頻寬限制 (50 KB/s)**、**下載目錄單 IP 單連接 (防多執行緒下載工具)**、**目錄瀏覽/靜態檔案服務**。本文記錄完整編譯安裝、模組載入、配置參數、啟動腳本全流程。

環境與軟體包

  • OS: FreeBSD 6.1
  • Apache: 2.0.59 (源碼編譯安裝至 `/usr/local/apache`)
  • 依賴套件 (pkg_add):`libiconv` `pkgconfig` `libxml2` `perl` (apxs 需 Perl)
  • 功能模組 (源碼編譯載入):`mod_bw-0.7` (限速)、`mod_limitipconn-0.22` (限制單 IP 連接數)

編譯安裝 Apache 核心

cd /root/src
tar zxvf httpd-2.0.59.tar.gz
cd httpd-2.0.59
./configure --prefix=/usr/local/apache --enable-so
# --enable-so: 啟用 DSO 動態模組支援,apxs 載入 .so 模組必備
make && make install

載入功能模組 (apxs)

/usr/local/apache/bin/apxs -i -c -a /root/src/mod_bw/mod_bw.c
/usr/local/apache/bin/apxs -i -c -a /root/src/mod_limitipconn/mod_limitipconn.c

# 驗證 httpd.conf 自動新增:
# LoadModule bw_module modules/mod_bw.so
# LoadModule limitipconn_module modules/mod_limitipconn.so

核心配置 (httpd.conf)

# 1. 全域限速: 所有請求限制 50 KB/s (50000 Bytes/s)
BandWidthModule On
ForceBandWidthModule On
BandWidth all 50000

# 2. 啟用擴展狀態 (mod_limitipconn 需要)
ExtendedStatus On

# 3. 下載目錄單 IP 單連接
<Location /down>
  MaxConnPerIP 1
</Location>

# 4. DocumentRoot 與預設目錄權限
DocumentRoot "/usr/local/apache/htdocs"
<Directory />
  Options FollowSymLinks
  AllowOverride None
  Order deny,allow
  Deny from all
</Directory>

<Directory "/usr/local/apache/htdocs">
  Options Indexes FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

# 5. 下載目錄實體路徑映射
Alias /down "/usr/local/apache/htdocs/down"
<Directory "/usr/local/apache/htdocs/down">
  Options Indexes FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

關鍵配置解析

服務控制與開機自啟

# 控制指令
/usr/local/apache/bin/apachectl start
/usr/local/apache/bin/apachectl stop
/usr/local/apache/bin/apachectl restart
/usr/local/apache/bin/apachectl graceful  # 平滑重載

# 開機自啟腳本 (FreeBSD rc.d)
cat > /usr/local/etc/rc.d/apache.sh <<'EOF'
#!/bin/sh
/usr/local/apache/bin/apachectl start &
EOF
chmod 755 /usr/local/etc/rc.d/apache.sh
# 或加入 /etc/rc.conf: apache_enable="YES" (需對應 rc.d 腳本)

驗證與測試

  1. 瀏覽器訪問 `https://server_ip/` → 顯示預設頁面/目錄列表
  2. 訪問 `https://server_ip/down/` → 顯示下載目錄列表
  3. 下載測試檔 → 速度穩定在 50 KB/s 左右
  4. 啟動迅雷/IDM 多執行緒下載同一檔案 → 僅建立 1 條連接、速度不疊加
  5. 同時開啟網頁瀏覽 → 不受單連接限制 (因限制僅針對 `/down` Location)

進階擴充建議

  • Token 防盜鏈: `mod_auth_token` / `mod_sec_download` 產生帶簽名/過期時間的下載連結
  • IP 白名單不限速: `BandWidth 192.168.1.0/24 0` (0 表示不限速)
  • 流量配額: `mod_quota` / 應用層配合 Redis 計數
  • HTTPS 支援: 編譯 `--enable-ssl`、配置憑證、啟用 `SSLProtocol TLSv1.2 TLSv1.3`、`SSLCipherSuite HIGH:!aNULL:!MD5`
  • 日誌分析: `CustomLog` 結合 `mod_log_config` 記錄下載完成/中斷/速度/用戶代理

結語

Apache + mod_bw + mod_limitipconn 以**極低資源佔用、原生模組化、配置簡潔**實現了下載伺服器核心需求。對於中小型檔案分發、軟體更新、資料集發佈場景,是輕量級、免授權成本的優選方案。關鍵在於**「全域限速保護頻寬、目錄級單連接防盜鏈/多執行緒、Alias 映射解耦 URL 與實體路徑」**三大設計模式。

Copyright © Windows教程網 All Rights Reserved
指令作用注意事項
BandWidth all 50000所有連接 (含 HTML/CSS/JS/圖片/下載) 統一限速 50 KB/s若僅限下載檔案,需搭配 `` 或 `Location` 區隔
ForceBandWidthModule On強制對所有回應啟用限速,含錯誤頁面/重導向關閉則僅限速成功回應 (2xx)
MaxConnPerIP 1同一 IP 同一時間僅允許 1 條連接進入 `/down`有效封殺 Thunder/IDM/FDM 等多執行緒下載工具;正常瀏覽單執行緒不受影響
ExtendedStatus On啟用 Apache 狀態頁面,mod_limitipconn 依賴其計數器亦可供 `mod_status` 監控
Alias /down將 URL 路徑 `/down` 映射至實體目錄實體目錄需存在且權限正確