Overview
Nginx (pronounced as “Engine-X”) is an open source web server that is often used as reverse proxy or HTTP cache. It is available for Linux for free.
In this tutorial we’ll install Nginx and set up a basic site.
What you’ll need
- A computer running Ubuntu Server 16.04 LTS
- Some basic knowledge of command line use
Installing Nginx
To install Nginx, use following command:
sudo apt update
sudo apt install nginx
After installing it, you already have everything you need.
You can point your browser to your server IP address. You should see this page:
Creating our own website
Default page is placed in /var/www/html/
location. You can place your static pages here, or use virtual host and place it other location.
Virtual host is a method of hosting multiple domain names on the same server.
Let’s create simple HTML page in /var/www/tutorial/
(it can be anything you want). Create index.html
file in this location.
cd /var/www
sudo mkdir tutorial
cd tutorial
sudo "${EDITOR:-vi}" index.html
Paste the following to the index.html
file:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Hello, Nginx!</title>
</head>
<body>
<h1>Hello, Nginx!</h1>
<p>We have just configured our Nginx web server on Ubuntu Server!</p>
</body>
</html>
Save this file. In next step we are going to set up virtual host to make Nginx use pages from this location.
Setting up virtual host
To set up virtual host, we need to create file in /etc/nginx/sites-enabled/
directory.
cd /etc/nginx/sites-enabled
sudo "${EDITOR:-vi}" tutorial
server {
listen 81;
listen [::]:81;
server_name example.ubuntu.com;
root /var/www/tutorial;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
root
is a directory where we have placed our .html file. index
is used to specify file available when visiting root directory of site. server_name
can be anything you want, because you aren’t pointing it to any real domain by now.
Activating virtual host and testing results
To make our site working, simply restart Nginx service.
sudo service nginx restart
Let’s check if everything works as it should. Open our newly created site in web browser. Remember that we used :81 port.
Congratulations! Everything works as it should. We have just configured Nginx web server.
Syntax
Once nginx is started, it can be controlled by invoking the executable with the -s
parameter. Use the following syntax:
nginx -s signal
Where signal may be one of the following:
stop
— fast shutdownquit
— graceful shutdownreload
— reloading the configuration filereopen
— reopening the log files
A signal may also be sent to nginx processes with the help of Unix tools such as the kill
utility. In this case a signal is sent directly to a process with a given process ID. The process ID of the nginx master process is written, by default, to the nginx.pid
in the directory /usr/local/nginx/logs
or /var/run
. For example, if the master process ID is 1628, to send the QUIT signal resulting in nginx’s graceful shutdown, execute:
kill -s QUIT 1628
For getting the list of all running nginx processes, the ps
utility may be used, for example, in the following way:
ps -ax | grep nginx