Cài đặt Varnish Cache


Varnish Cache là một phần mềm tăng tốc website (web application accelerator) và thường được biết đến như là caching HTTP reverse proxy. Khi có request đến, Varnish sẽ gửi request đến server để xử lý, nhận lại dữ liệu, lưu lại dữ liệu, gửi dữ liệu cho người dùng. Và những lần request sau Varnish sẽ sử dụng các dữ liệu cache trước đó trả lại cho người dùng luôn mà ko cần phải request về server nữa.

Để có thể sử dụng Varnish cho server của mình thì cần phải cài đặt cấu hình theo các bước cơ bản sau:

VARNISH SETUP

Step 1 – Hãy vào website của Varnish để xem version mới nhất
https://www.varnish-cache.org/releases

Click vào Instructions link để xem hướng dẫn về cài đặt

Step 2 – Add Varnish repository

  1. yum install epel-release
  2. rpm –nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.1.el7.rpm
    (or: rpm –nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.1.el6.rpm for RHEL6)
  3. yum install varnish

Notes: Khi chạy lệnh install rất có thể bạn sẽ gặp lỗi sau

Hãy vào /etc/yum.repos.d để xóa repos bị lỗi của varnish đi và add 1 repos khác vào để cài đặt. Với trường hợp của mình là bị lỗi với version 4.1.el7 nên mình đã instal bản varnish-4.0.el6.rpm

Và đây là kết quả khi cài đặt thành công

Vậy là OK rồi. Mọi người nhớ thiết lập chế độ tự khởi động cho nó khi reboot nhé

Vậy là xong phần cài đặt Varnish (vẫn chưa chạy nhé)

VARNISH CONFIGURATION

Port mặc định của webserver là 80. Nên ta cần cấu hình cho Varnish sẽ nghe port này. và chuyển port của web server qua 1 port khác như là 8080. Sau khi chuyển xong thì phải cấu hình cho Varnish kết nối với web server thông qua port mới đổi (8080).

Về cơ bản thì có 3 bước là vậy, nhưng nếu server của bạn đã cài đặt soft quản lý host thì sẽ có thêm 1 vài bước để sửa cấu hình của soft nữa.  Bài viết này mình sẽ hướng dẫn cấu hình với VestaCP:

Step 1 – We have to setup Varnish so it will run on port 80. The scenario will be like this: Varnish listen on port 80, Nginx on port 8082, then Apache on port 8080

Web request = Varnish (80) -> Nginx (8082) -> Apache (8080)

Trước tiên ta sẽ thay đổi cấu hình của Varnish theo đường dẫn sau: /etc/sysconfig/varnish

Hãy đổi:

VARNISH_LISTEN_PORT=6081              ————–> đổi sang port 80

VARNISH_LISTEN_ADDRESS=”địa chỉ IP public của bạn”    —-> thêm dòng này vào nếu chưa có nhé

VARNISH_STORAGE_SIZE=1G       ————–> chỉnh lại Ram cho Varnish, mình để 256MB

VARNISH_STORAGE  ————> “malloc,${VARNISH_STORAGE_SIZE}”

Step 2 – Tiếp theo, ta sẽ thay đổi cấu hình cho file VCL của Varnish trong /etc/varnish/default.vcl . File VCL này sẽ cho Varnish biết được rằng sẽ phải tìm webserver ở đâu:

  1. Đổi .host ip từ 127.0.0.1 sang IP public của server
  2. Đổi .port 80 sang .port 8082 — là port mà nginx sẽ lắng nghe.
  3. Phần comment ở bên dưới mình chưa hiểu lắm nên vẫn để nguyên, ko thay đổi gì

Step 3 – Cấu hình cho Nginx

Trong folder này /etc/nginx/conf.d/ có chưa file cấu hình cho địa chỉ IP public của server: xxx.xxx.xxx.xxx.conf

Chúng ta cần sửa port :80 sang :8082

Tương tự đối với các file cấu hình cho các website của Nginx. VestaCP lưu cấu hình cho các website theo từng user, ta cần phải vào từng folder của từng user và sửa port từ :80 sang :8082

/home/user/conf/web

Step 3 – Cấu hình cho VestaCP

Hãy tìm trong file cấu hình /usr/local/vesta/conf/vesta.conf dòng khai báo PROXY_PORT và đổi từ 80 -> 8082

Vậy là xong phần cấu hình. Với VestaCP ta cần phải thêm port trong phần Firewall nữa.

Hãy login vào Vesta CP dashboard -> Firewall

Sau đó click vào /WEB và thêm port mới : 80,443  –> 80,443,8082

VestaCP đặt port cho Apache là 8080 nên ta ko cần sửa gì nữa. Hãy khởi động Varnish lên, restart lại nginx và test thử nhé. Load thử 1 trang web trên server và xem header, bạn sẽ thấy response nhận được là thông qua Varnish:

Vậy là hết rồi đó. Enjoy please ^_^!