How to Install WordPress with Varnish Cache (Ubuntu/Nginx)

You are currently viewing How to Install WordPress with Varnish Cache (Ubuntu/Nginx)

Installing WordPress with Varnish Cache on an Ubuntu server running Nginx involves several steps. Varnish Cache is a web application accelerator also known as a caching HTTP reverse proxy. By using it, you can speed up your WordPress site significantly. The following guide assumes you have a basic understanding of Linux commands and you’re logged into your server as a non-root user with sudo privileges.

Step 1: Install Nginx

  1. Update your Ubuntu package list:
sudo apt update
  1. Install Nginx:
sudo apt install nginx
  1. Adjust the firewall to allow HTTP and HTTPS traffic:
sudo ufw allow 'Nginx Full'
  1. Check the status of Nginx:
systemctl status nginx

If it’s active and running, you can proceed.

Step 2: Install MySQL

  1. Install MySQL server:
sudo apt install mysql-server
  1. Secure your MySQL installation:
sudo mysql_secure_installation

Follow the prompts to set a root password and make other security-related changes.

  1. Log into the MySQL shell:
sudo mysql
  1. Create a database for WordPress:
CREATE DATABASE wordpress_db DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
  1. Create a MySQL user and grant privileges to the WordPress database:
GRANT ALL ON wordpress_db.* TO 'wordpress_user'@'localhost' IDENTIFIED BY 'password';

Replace 'password' with a secure password.

  1. Exit the MySQL shell:

Step 3: Install PHP

WordPress requires PHP. Install PHP along with necessary extensions:

sudo apt install php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip

Step 4: Configure Nginx for WordPress

  1. Go to the Nginx sites-available directory:
cd /etc/nginx/sites-available/
  1. Create a new configuration file for your site:
sudo nano wordpress
  1. Add the following server block (adjust server_name, root, and other values as necessary):
server {
    listen 80;
    root /var/www/wordpress;

    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$args;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
  1. Enable your site by linking it to the sites-enabled directory:
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
  1. Test the Nginx configuration for syntax errors:
sudo nginx -t
  1. Reload Nginx:
sudo systemctl reload nginx

Step 5: Install WordPress

  1. Change to the web root directory:
cd /var/www/
  1. Download the latest WordPress:
sudo wget
  1. Unpack the WordPress archive:
sudo tar -xzvf latest.tar.gz
  1. Change the ownership of the WordPress files:
sudo chown -R www-data:www-data wordpress/
  1. Move or copy the WordPress sample configuration file to wp-config.php and edit it:
cd wordpress
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php
  1. Update the database details:
define('DB_NAME', 'wordpress_db');
define('DB_USER', 'wordpress_user');
define('DB_PASSWORD', 'password');

Replace 'password' with the password you set earlier.

Step 6: Install and Configure Varnish Cache

  1. Install Varnish:
sudo apt install varnish
  1. Configure Varnish to listen on port 80 and Nginx to listen on another port, like 8080. Edit the Varnish service file:
sudo nano /etc/default/varnish

And set the port to 80 in the DAEMON_OPTS section.

  1. Update the Nginx site configuration for your WordPress site to listen on port 8080, and adjust the Varnish backend configuration to point to your Nginx server listening on port 8080.
  2. Restart both services:
sudo systemctl restart varnish
sudo systemctl restart nginx

Step 7: Finalizing WordPress Installation

Navigate to your website in a web browser and follow the WordPress installation process.


  • Always back up configuration files before modifying them.
  • This guide uses default locations and settings as examples. Adjust them according to your needs or environment.
  • Security configurations, like setting up SSL certificates with Let’s Encrypt, are recommended for a production environment.

By following these steps, you should now have a WordPress site running on Nginx with Varnish Cache installed, offering you improved website loading speeds.

Leave a Reply