2012年6月11日 星期一

使用 trafficserver 建立 mirror 的 FreeBSD portsnap site.

某長輩說目前的 portsnap.tw.freebsd.org 用 squid 跑, 某些原因, 要定期去清 cache,

我就想說, 那到底能不能直接用 trafficserver 來直接替換 squid, 單純跑 reverse proxy 呢?

答案是 ok 的, 雖然 traffic server 單純跑 reverse proxy 並不能顯示他的強項.



1: 在 www/trafficserver 下面打個 make install, 目前版本是 3.0.4 (stable)

2: 在 /etc/rc.conf or /etc/rc.conf.local 加上 "trafficserver_enable=YES"

3: 修改 /usr/local/etc/rc.d/trafficserver, 把 command & procname 裡面的 traffic_server 換成 traffic_manager

    這邊的理由是, traffic_server 並不能用 root 跑, 因為程式裡面會檢查,
    但是不用 root 跑, 他又不能 bind 在 port 1024 以下.
    解法就是跑 traffic_manager, 讓他帶起 traffic_server, 這樣就可以必掉一些安全性問題,
    又讓他 bind port 80.

4: 修改 /usr/local/etc/trafficserver/record.config
    1: CONFIG proxy.config.http.server_port INT 80 (讓 server 跑在 port 80)
    2: CONFIG proxy.config.http.cache.required_headers INT 0 (不管 response hearer 如何, 就是要 cache)

5: 修改 /usr/local/etc/trafficserver/remap.config
    加上

    map / http://portsnap.freebsd.org/

    這是指定 trafficserver 的 origin server 是 portsnap.freebsd.org

    其實應該不應該直接 remap '/', 而是要指定整個的 http schema 的,
    但是因為 portsnap 會用到 fetch, 而 fetch 並不多送 host header.

6: 修改 /usr/local/etc/trafficserver/storage.config
    把 256M 修改成想要的 cache size.

7: /usr/local/etc/rc.d/trafficserver start


這樣 local 就可以有一份 portsnap mirror 了.



portsnap -s 127.0.0.1 fetch 就可以作測試了.

--
UPDATE: 長輩說, 其實不是 portsnap 有問題, 而是 freebsd-update 會出問題, 但是其實是同一台, 所以要換就會整個一起換.

remap.config 這邊又研究了一下, 發現其實是 ok 的, 因為我偷懶, 沒跟著動 dns,

以 portsnap.tw.freebsd.org & update.tw.freebsd.org 這兩個 hostname 來講,

remap.config 設定如下.

map http://update.tw.freebsd.org/ http://update.freebsd.org/
map http://portsnap.tw.freebsd.org/ http://portsnap.freebsd.org/

設定好重跑 trafficserver 即可.

沒有留言: