Để cài Varnish trước tiên bạn hãy nạp package của họ vào:
rpm --nosignature -i https://repo.varnish-cache.org/redhat/varnish-3.0.el6.rpm
Và cài Varnish qua lệnh yum:
yum install varnish
Tiếp tục dùng lệnh chkconfig varnish on để varnish khởi động cùng vps sau khi reboot.
Dùng lệnh vi /etc/sysconfig/varnish để mở file và tìm kiếm dòng :
VARNISH_LISTEN_PORT=6081
Đổi 6081 thành 80:
VARNISH_LISTEN_PORT=80
Dùng lệnh vi /etc/varnish/default.vcl tìm kiếm backend default thành thế này:
backend default {
.host = "127.0.0.1";
.port = "8080";
}
Tiếp tục xóa toàn bộ đoạn bên dưới và thay thế bằng đoạn dưới đây (lưu ý cấu hình dưới đây chỉ áp dụng cho wp) :
acl purge {
"127.0.0.1";
"IP của máy chủ của bạn";
}
sub vcl_recv {
# Allow purging
if(req.request == "PURGE"){
if(!client.ip ~ purge){
error 405 "Purging not allowed.";
}
return(lookup);
}
# Lưu cache các tập tin này cho toàn bộ users
if ( req.url ~ "(?i)\.(png|gif|jpeg|jpg|ico|swf|css|js|html|htm)(\?[a-z0-9]+)?$" ) {
unset req.http.cookie;
}
# Không load cache cho những thành viên đăng nhập (dùng cookie wordpress_logged_in)
if ( req.http.cookie ~ "wordpress_logged_in" || req.url ~ "vaultpress=true" ) {
return( pass );
}
# Drop các cookie gửi đến WordPress
if ( ! ( req.url ~ "wp-(login|admin)" ) ) {
unset req.http.cookie;
}
# Handle compression correctly. Different browsers send different
# "Accept-Encoding" headers, even though they mostly all support the same
# compression mechanisms. By consolidating these compression headers into
# a consistent format, we can reduce the size of the cache and get more hits.
# @see: http://varnish.projects.linpro.no/wiki/FAQ/Compression
if ( req.http.Accept-Encoding ) {
if ( req.http.Accept-Encoding ~ "gzip" ) {
# If the browser supports it, we'll use gzip.
set req.http.Accept-Encoding = "gzip";
}
else if ( req.http.Accept-Encoding ~ "deflate" ) {
# Next, try deflate if it is supported.
set req.http.Accept-Encoding = "deflate";
}
else {
# Unknown algorithm. Remove it and send unencoded.
unset req.http.Accept-Encoding;
}
}
}
sub vcl_fetch {
# Thiết lập cho cache live trong 10 tiếng, mặc định là 2 phút.
set beresp.ttl = 10h;
# Drop any cookies WordPress tries to send back to the client.
if ( ! req.url ~ "wp-(login|admin)" && ! req.http.cookie ~ "wordpress_logged_in" ) {
unset beresp.http.set-cookie;
}
}
sub vcl_miss {
if(req.request == "PURGE"){
purge;
error 200 "Purged";
}
}
sub vcl_hit {
if(req.request == "PURGE"){
purge;
error 200 "Purged";
}
}
sub vcl_deliver {
if(obj.hits > 0) {
set resp.http.X-Varnish-Cache = "HIT ("+obj.hits+")";
} else {
set resp.http.X-Varnish-Cache = "MISS";
}
}
2. Cấu hình trên apacheDùng lệnh vi /etc/httpd/conf/httpd.conf tìm kiếm các giá trị :
Listen 80
.....
NameVirtualHost *:80
Sửa thành :
Listen 8080
.....
NameVirtualHost *:8080
Bây giờ hãy khởi động lại Apache và Varnish:
service httpd restart
service varnish restartDùng lệnh netstart -nplt để kiểm tra xem Varnish đã dùng cổng 80 và apache dùng cổng 8080.Tiếp đến dùng lệnh curl -I http://yourdomain.com để kiểm tra http header :
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.4.36
X-Pingback: http://yourdomain.com/
Content-Type: text/html; charset=UTF-8
Content-Length: 7351
Accept-Ranges: bytes
Date: Tue, 20 Jan 2015 23:34:19 GMT
X-Varnish: 567877718 567877710
Age: 12
Via: 1.1 varnish
Connection: keep-alive
X-Varnish-Cache: HIT (2)
Nếu kết quả hiện như trên là varnish đã cấu hình thành công.
3. Cấu hình phpmyadmin
Để loại bỏ cache cho thư mục chứa phpmyadmin nắm ở thư mục phpmyadmin có thể thêm cấu hình sau:
if ( ! ( req.url ~ "/phpmyadmin" ) ) {
unset req.http.cookie;
}
vào file /etc/sysconfig/varnish sau đó khởi động lại varnish bằng lệnh service varnish restart.Chúc bạn thành công!