When dealing with high traffic websites and blogs, you should implement some kind of caching mechanism. The best way to handle caching website content is via proxy servers. There are two good open source caching proxy servers: Varnish and Pound.
This post describes how to use Apache2 with Pound as proxy servers. To install and configure Pound to be a proxy server to Apache2, then the steps below is a good starting point.
Pound is an open source HTTP accelerator. It is usually configured to sit in front of webservers to quickly serve HTTP/HTTPS requests. Pound can also be used as load balancer to distribute loads across multiple webservers.
This brief tutorial is going to show students and new users how to install and configure Pound with Apache2 on Ubuntu 16.04 LTS. In this post, we’ll setup Pound to be the doorway or front-end to Apache2 to quickly serve HTTP requests.
When you configure Pound to be the font-end to Apache2 or other webservers, it can greatly enhance the server performance. This is because Pound stores web caches in system’s memory ensuring faster retrieval in subsequent requests for the same resource.
To get this working, follow the steps below:
Step 1: Install Apache2 HTTP Server
First run the commands below to install Apache2 webserver.
sudo apt-get update sudo apt-get install apache2
After installing Apache2, the commands below can be used to stop, start and enable Apache2 to always startup everytime the server boots up.
sudo systemctl stop apache2.service sudo systemctl start apache2.service sudo systemctl enable apache2.service
By default apache2 HTTP service automatically is bond to port 80 and 443 for HTTPS. This
Step 2: Install Pound Proxy Server
Now that Apache2 is installed, run the commands below to install Pound
sudo apt-get install pound
After installing Pound, the commands below can be used to start, stop and enable Varnish to always start up when the server boots
sudo systemctl stop pound.service sudo systemctl start pound.service sudo systemctl enable pound.service
Step 3: Switch Apache2 default post to 8080
Since we want Pound to listen for all traffic coming to port 80 which is Apache2 default port, let’s configure Apache2 to use another port number. You can open Apache2 default port configuration file at /etc/apache2/ports.conf and change the Listen value to 8080.
To quickly change the port run the commands below to open Apache2 default port configuration file.
sudo nano /etc/apache2/ports.conf
Then make sure the file has these lines. Save when done.
# If you just change the port or add more ports here, you will likely also # have to change the VirtualHost statement in # /etc/apache2/sites-enabled/000-default.conf NameVirtualHost 127.0.0.1:8080 Listen 127.0.0.1:8080
Next, open Apache2 default virtualhost config file.
sudo nano /etc/apache2/sites-available/000-default.conf
Then make the highlighted change below.
<VirtualHost 127.0.0.1:8080>
Save then file and exit.
Then restart Apache2
sudo systemctl restart apache2.service
Now to access Apache2, you’ll have to enter the server IP or hostname followed by port # 8080.
ex.
Step 4: Configure Pound to use Port 80
Now that port 80 is free, let’s configure Pound to use that post instead. To assign port 80 to Varnish, run the commands below.
Pound default configure file is location at /etc/pound/pound.cfg
Open it by running the commands below:
sudo nano /etc/pound/pound.cfg
Then look for the config block under listen, redirect and .. and make the highlighted changes as shown below. Use the server IP address and not the loopback (127.0.0.1)
User "www-data" Group "www-data" #RootJail "/chroot/pound" LogLevel 1 ## check backend every X secs: Alive 30 # poundctl control socket Control "/var/run/pound/poundctl.socket" ###################################################################### ## listen, redirect and . to: ## redirect all requests on port 8080 ("ListenHTTP") to the local webserver (see "Service" below): ListenHTTP Address 192.168.43.133 Port 80 ## allow PUT and DELETE also (by default only GET, POST and HEAD)?: xHTTP 0 Service BackEnd Address 192.168.43.133 Port 8080 End End End
Save the file and close out.
Next, run the commands to open Pound default startup script config.
sudo nano /etc/default/pound
Then change the value to 1
# prevent startup with default configuration
# set the below varible to 1 in order to allow pound to start
startup=1
Save the file.
After that, restart both Apache2 and Varnish
sudo systemctl restart apache2.service sudo systemctl restart pound.service
If everything is setup correctly, Pound should be the default listener of port 80.
Congratulations! You’ve just installed Apache2 with Pound support.
If you followed the steps above and can’t still get Pound to listen on port 80, run the commands below to create Pound socket control directory if it’s not already there.
sudo mkdir /var/run/pound
During my test, the folder above was missing.
You may also like the post below: