NGNIX (pronounced Engine X) is a web server /reverse proxy/load balancer used by many high traffic applications because it can handle thousands of simultaneous requests with its event-driven architecture.
It is faster than Apache and openLightSpeed in most areas
How does it work?
It instances a worker process for each CPU core that run concurrently and handle requests is a non-blocking fashion
How to configure it?
sudo apt-get update
sudo apt-get install nginx
Next, we need to reconfigure our firewall software to allow access to Nginx, for this we use “Uncomplicated Firewall” (UFW)
We can list the applications configurations that
ufw knows how to work with by typing:
sudo ufw app list
- Nginx Full: This profile opens both port 80 (normal, unencrypted web traffic) and port 443 (TLS/SSL encrypted traffic)
- Nginx HTTP: This profile opens only port 80 (normal, unencrypted web traffic)
- Nginx HTTPS: This profile opens only port 443 (TLS/SSL encrypted traffic)
To allow port 80 types the following command
sudo ufw allow 'Nginx HTTP'
You can verify the change by the following command
sudo ufw status
Check your Web Server
We can check with the
systemd init system to make sure the service is running by typing
systemctl status nginx
“systemctl” stands for system control and “systemd” which plays with the word System D “System D is a manner of responding to challenges that require one to have the ability to think quickly, to adapt, and to improvise when getting a job done”
The configuration is stored in
sudo nano /etc/nginx/sites-available/default
The areas that these brackets define are called “contexts”
A virtual server is defined by a
server configuration block usually includes a
listen directive to specify the IP address and port on which the server listens for requests.
If a port is omitted, the standard port is used. Likewise, if an address is omitted, the server listens on all addresses.
NGINX tests the request’s
Host header field against the
server_name to find the appropriate server block for each request
Host header field does not match a server name, NGINX routes the request to the default server block which is the first one
NGINX Plus can send traffic to different proxies or serve different files based on the request URIs. These blocks are defined using the
location directive placed within a
location context can contain directives that define how to resolve a request – either serve a static file or pass the request to a proxied server
You can use variables in the configuration file
A variable is denoted by the (dollar) sign at the beginning of its name.
error_page directive, you can configure NGINX Plus to return a custom page along with an error code
error_page 404 /404.html;
listen 80 - The server block will listen for incoming connections on port 80 for the specified domain.
There is one more place where the configuration is stored
If you want to upload large files to the server you ill have to update the above file with the following code
return 301 http://www.adifferentdomain.com$request_uri;
/etc/init.d/nginx restart//orservice nginx restart
We can also do A/B testing with nginx with