Varnish 是一個「反向」的代理 (reverse proxy)
用法是和你的 Apache 一起,所有的流量都先經過 Varnish 的緩存
緩存落空後才由 Varnish 向 Apache 拿資料
因為 Apache 的結構是沒有針對檔案類別的
例如 Apache 送出一張圖片一樣會將 mod_php 載入到 RAM 內
同例可用於 CSS, JS 等靜態的檔案
做成大量的 RAM 浪費
而Varnish 的緩存可大大幫助這類靜態檔案佔用的資源
從而提升整體的效能
這次我的目標是用最少的下線時間安裝和設置 Varnish
大家記得一定要先備份有關設定的檔案
安裝 Varnish
curl http://repo.varnish-cache.org/debian/GPG-key.txt | sudo apt-key add -
echo "deb http://repo.varnish-cache.org/ubuntu/ lucid varnish-3.0" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get install varnish
Varnish 預設會從 localhost 的 port 8080 連接 Apache
所以我們便設定一下 Apache 打開 8080:
sudo vim /etc/apache2/ports.conf
NameVirtualHost *:80
NameVirtualHost *:8080
Listen 80
Listen 8080
為了最少的下線時間,Apache 會暫時打開 80 和 8080 兩個 port
80 為一般的使用者
8080 為了測試和 Varnish 的連接
VirtualHost 的設定
sudo vim /etc/apache2/sites-avaiable/default
<VirtualHost *:80 *:8080>
重啟 Apache
sudo service apache2 restart
可以使用 http://localhost:8080/ 測試一下 Apache 的 port 8080
Varnish 預設會使用 256M RAM 我修改一下:
sudo vim /etc/default/varnish
DAEMON_OPTS="-a :6081 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,64m"
sudo /etc/init.d/varnish restart
看到 Varnish 是預設使用 port 6081 的
可以使用 http://localhost:6081/ 測試一下
使用 chrome 的 network inspector 可以看到 “Response Header" 有一段 "Via 1.1 varnish" 就表示成功了
成功之後便可以真正使用 Varnish 服務 port 80 了
修改 Apache:
sudo vim /etc/apache2/ports.conf
#NameVirtualHost *:80
NameVirtualHost *:8080
#Listen 80
Listen 8080
修改 Varnish:
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,64m"
一次過重啟 Apache, Varnish
sudo service apache2 restart;sudo /etc/init.d/varnish restart