Varnish is a high-performance cache module that improves website speed and performance with caching. Here’s how to install varnish cache for NGINX server in CentOS, Redhat, Fedora Linux.
How To Install Varnish Cache for NGINX in Centos
Here are the steps to install varnish cache for NGINX server in CentOS, Redhat, Fedora linux.
1. Install NGINX on CentOS
If you have already installed NGINX in CentOS, skip to the next step. Else open terminal and run the following commands to install NGINX.
# yum install nginx
If you get a yes/no prompt, enter ‘y’ or ‘Y’ to complete installation.
Run the following command to start NGINX and enable it to autostart during system boot.
# systemctl start nginx # systemctl enable nginx
Bonus Read : NGINX SSL Configuration Step by Step
2. Add EPEL Repository
Some of Varnish cache dependencies require EPEL repository setup. Run the following command to install it.
# yum install -y epel-release
3. Install dependencies
Install the dependencies required for varnish cache.
# yum install pygpgme yum-utils
Bonus Read : How to Prevent Image Hotlinking in NGINX
4. Add Varnish Cache Repository
Open the following file
# vi /etc/yum.repos.d/varnishcache_varnish5.repo
and copy paste the following code in it. Make sure you replace /el/7 with your Linux version. In this case, we have used 7 for CentOS 7.
[varnishcache_varnish5] name=varnishcache_varnish5 baseurl=https://packagecloud.io/varnishcache/varnish5/el/7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/varnishcache/varnish5/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [varnishcache_varnish5-source] name=varnishcache_varnish5-source baseurl=https://packagecloud.io/varnishcache/varnish5/el/7/SRPMS repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/varnishcache/varnish5/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300
Save and close the file.
Bonus Read : How to harden NGINX Server
5. Install Varnish Cache
Run the following command to install varnish cache in CentOS. Enter y or Y or yes in case you see any prompts.
# yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish5' # yum install varnish
After installation, you will find the main executable at /usr/bin/varnishd and configuration files at /etc/varnish/. Here are the other key files you need to note.
- /etc/varnish/varnish.params – varnish environment configuration file.
- /etc/varnish/default.vcl – main varnish configuration file, written using vanish configuration language(VCL).
- /etc/varnish/secret – varnish secret file
You can get the above information by running the following command in terminal.
# rpm -qi varnish
Verify installation by running the following commands
# which varnishd # varnishd -V
6. Configure NGINX to Work with Varnish
By default, NGINX listens to port 80. In this step, we will make Varnish listen to port 80 and NGINX listen to port 8080 so that NGINX is running behind Varnish cache.
Open NGINX configuration file at /etc/nginx/nginx.conf
# vi /etc/nginx/nginx.conf
If you have configured separate virtual hosts for your website (e.g www.website.com), such as /etc/nginx/sites-enabled/website.conf then open its configuration with the following command
# vi /etc/nginx/sites-enabled/website.conf
Look for the line in server block
listen 80;
and change it to
listen 8080;
Here’s an example
Please note, if you make changes to a virtual host configuration file, only that website will be configured to work with Varnish cache.
7. Configure Varnish to Work with NGINX
By default, Varnish listens to port 6081. We need to make it listen to port 80. Open varnish configuration file.
# vi /etc/varnish/varnish.params
Update VARNISH_LISTEN_PORT from 6081 to 80 as shown below.
8. Setup NGINX as backend proxy
Open /etc/varnish/default.vcl file to configure NGINX as backend proxy.
# vi /etc/varnish/default.vcl
Update the .port value in backend block to have 8080 value. This will point varnish cache to NGINX.
backend default { .host = "127.0.0.1"; .port = "8080"; }
9. Restart NGINX and Varnish Cache
Restart NGINX and Varnish cache to apply changes
# systemctl restart nginx # systemctl start varnish # systemctl enable varnish # systemctl status varnish
10. Test Varnish Cache with NGINX
Run the curl command to send a request to your server.
# curl -I http://your_server_or_ip
You will see via : 1.1 varnish (Varnish /5.2) header
Hopefully, now you can install and setup varnish cache for NGINX on CentOS, Redhat, Fedora Linux systems.
Ubiq makes it easy to visualize data in minutes, and monitor in real-time dashboards. Try it today!
Sreeram Sreenivasan is the Founder of Ubiq. He has helped many Fortune 500 companies in the areas of BI & software development.