- Lab
- A Cloud Guru
Configuring the NGINX Server - HTTPS Virtual Hosts / Load Balancing / IP Access Restrictions
Before we can start building our world-changing website or application on LEMP, we have to lay the foundation - the stack. In this hands-on lab, we will walk through configuring NGINX on Ubuntu Linux. We will explore configuring HTTPS (secure) virtual hosts, load balancing, and IP access restrictions. Completing this lab will provide a good understanding of how to implement these concepts in NGINX on Ubuntu Linux.
Path Info
Table of Contents
-
Challenge
Verify the Self-Signed Certificate for the NGINX Server
First, we'll need to become the
root
user:sudo su -
Let's verify that the X509 certificate was correctly generated using the
openssl verify
command:openssl verify -CAfile /etc/nginx/ssl/bigstatecollege.edu/ca-cert.pem /etc/nginx/ssl/bigstatecollege.edu/server-cert.pem
We should see the following:
server-cert.pem: OK
-
Challenge
Configure the Virtual Host to Use HTTPS
Configure the
bigstatecollege.edu
virtual host to use HTTPS:cd /etc/nginx/sites-available
vi bigstatecollege.edu.conf
Change the
listen
line from port80
to443
, and addssl
after443
:listen 443 ssl;
Add the following lines after the
server_name
configuration line:ssl_certificate /etc/nginx/ssl/bigstatecollege.edu/server-cert.pem; ssl_certificate_key /etc/nginx/ssl/bigstatecollege.edu/server-key.pem;
Save and exit.
-
Challenge
Validate HTTPS
Validate and reload NGINX:
nginx -t
systemctl reload nginx
Test the new HTTPS connection. We will need to use the
--insecure
switch in order to accept the self-signed certificate:curl --insecure https://www.bigstatecollege.edu
We should see
Welcome to www.bigstatecollege.edu!
.Congratulations! The virtual host for
bigstatecollege.edu
is now configured to use HTTPS. -
Challenge
Configure Load Balancing on the Virtual Host
There's already an
upstream
group configured in thebigstatecollege.edu
virtual host. Remove thebackup
status fromapp2
andapp3
. This will make them live. Edit thebigstatecollege.edu.conf
file:vi bigstatecollege.edu.conf
The end result should look like the following:
upstream bscapp { server app1.bigstatecollege.edu:8085; server app2.bigstatecollege.edu:8086; server app3.bigstatecollege.edu:8087; }
Save and exit.
-
Challenge
Test Load Balancing on the Virtual Host
Validate and reload NGINX:
nginx -t
systemctl reload nginx
Test the new configuration for
https://www.bigstatecollege.edu/app
:curl --insecure https://www.bigstatecollege.edu/app
Reload the command several times. We should see
Welcome to app1.bigstatecollege.edu!
. -
Challenge
Restrict Access By IP Address
We're going to restrict the
bigstatecollege.edu
virtual host to the 127.0.0.1 interface. Add the following lines after thelisten 443;
line in thebigstatecollege.edu.conf
file:allow 127.0.0.1; deny all;
Save and exit.
-
Challenge
Test IP Address Restriction
Validate and reload NGINX:
nginx -t
systemctl reload nginx
Test the new configuration for
https://www.bigstatecollege.edu
:curl --insecure https://www.bigstatecollege.edu
Access is forbidden via the private IP address. Try to access the virtual host via
localhost
:curl --insecure -H "www.bigstatecollege.edu" https://localhost
We should see
Welcome to www.bigstatecollege.edu!
.
What's a lab?
Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.
Provided environment for hands-on practice
We will provide the credentials and environment necessary for you to practice right within your browser.
Guided walkthrough
Follow along with the author’s guided walkthrough and build something new in your provided environment!
Did you know?
On average, you retain 75% more of your learning if you get time for practice.