Cài đặt, cấu hình VPS sử dụng Varnish làm Reverse Proxy

Bài viết này sẽ hướng dẫn cài đặt, cấu hình VPS sử dụng varnish làm reverse proxy.

I. Varnish là gì ?

Varnish là một ứng dụng độc lập nên việc sử dụng Varnish để lưu và truy xuất cache trên website sẽ có những lợi thế như bạn có thể thoải mái tùy chỉnh để nó ghi và truy xuất như mong muốn, mặc dù sẽ hơi nâng cao và khó một chút, nhưng nếu bạn hiểu các quy tắt trong VCL (Varnish Configuration Language) thì sẽ rất linh hoạt trong sử dụng, có thể cấu hình cache cho bất cứ loại website nào. Việc Varnish trực tiếp làm proxy để gửi dữ liệu cache cũng sẽ có tốc độ tốt hơn so với hình thức lưu cache thông thường.

II. Cài đặt sử dụng Varnish làm reverse proxy cho apache

1. Cài đặt và cấu hình Varnish

Để 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....

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/Compres...
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 apache

Dù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 restart

Dù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!

THAM KHẢO CÁC DỊCH VỤ TẠI VINAHOST

>> SERVER – COLOCATION – CDN

>> CLOUD – VPS

>> HOSTING

>> EMAIL

>> WEBSITE

>> TÊN MIỀN

Đánh giá bài viết
Was this article helpful?
Đánh giá
Đánh giá bài viết
Đăng ký nhận tin

Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vinahost

    Bài viết liên quan
    Bình luận
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận