in PHP, Ubuntu/Debian

如何在 Ubuntu 16.04 上安裝 Squid (proxy server)

[English title:How to install Squid in Ubuntu 16.04 LTS?]

[前言]

因為做論文研究關係,需要用到 Squid 這類的 proxy server 來做網址導向(redirection)的動作。

[環境需求]

本次的Linux Distro:Ubuntu 16.04 LTS

[開始安裝!]


# 更新套件

sudo apt-get update

sudo apt-get install squid

# 複製一份設定檔,若改錯還可以把設定回復。

sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.backup

# 編輯 squid.conf

sudo vim /etc/squid/squid.conf

[squid.conf 的設定]

這邊只設定成:把指定的網址做重新導向的動作。

那我們是靠著 PHP script 來處理重新導向的動作,squid 會監聽所有的 HTTP 請求。

把他們交給 PHP 之後,接著交由 PHP 執行,接著 PHP 會去跑我們指定的 PHP script ,處理完並得到結果後進行輸出,結束。

以下是 squid.conf 的內容:除了下面有一些客製化的設定之外,基本上可以直接複製拿來做使用的。

我把 configuration (squid.conf) 貼在Gist:

以及:url_redirect.php (squid.conf 的 134行,使用 PHP script 處理導向)
作用:指的是,若連線到:www.animen.com.tw 就導向到:www.google.com.sa

[解析]

比較重要的地方是從:#custom configuration 下面開始(在 129 行開始),裡面有定義一些

requst header, 還有 url_rewrite 等。

  1. 其中的 192.169.0.1 應該要改成你自己當前電腦所使用的 IP。
  2. 如果要用:url_rewrite 把所有的請求都交給 PHP 來做處理的話,129 行到 133 行可以刪除。
    留下 134 以及 135 行即可。
  3. 若不靠 PHP scirpt 處理導向的話,請留下 129 行到 133 行。刪掉或註解 134 跟 135 行。
    129 行請換成當前電腦的 IP address (請用 ifconfig 指令查詢)。
  4. 第 129 行到 133 行,作用:當連到 www.google.com.pa 時,會自動導向到:https://google.com.tw
  5. 若要改 proxy server 的 port number,請參考第 44 行
  6. 第 101 行的 cache_mgr 是管理者 email 當有存取的動作的時候,就可以發信做通知
    當然也要設定與安裝 email server。
  7. 第 106 行的 visible_hostname 則是填寫你主機的 host name
  8. 任何設定完之後,記得要重啟 squid 服務,這樣新的設定才會生效。
  9. 因為會動到 HTTP 應用層上的東西,所以通常重啟服務會稍微久一點,是正常的。
  10. 有用防火牆的話,記得將 port 打開。(如果要允許讓外部連線的話,不用的話,這步就免了。)

[討論&後記]

雖然有一些方式,像是直接把要導向的 URL 直接的寫在 squid.conf 裡,不過就是我不太熟 bash,再加上要導向的網址很多,想說用 PHP 直接去做掉,會比較快一點。雖然效能會差一點。不過是導向靜態的內容檔案,感覺是還好的。說不定之後就會改成直接在 squid.conf 裡設定,不用 PHP script XD。

[參考資料]

Creating an HTTP Proxy Using Squid on Ubuntu 12.04

SQUID URL Redirection

Squid 官網