Step One—Add Nginx Repository
To add the CentOS 7 EPEL repository, open terminal and use the following command:
sudo yum install epel-release
Step Two—Install Nginx
Now that the Nginx repository is installed on your server, install Nginx using the following yum
command:
sudo yum install nginx
After you answer yes to the prompt, Nginx will finish installing on your virtual private server (VPS).
Step Three—Start Nginx
Nginx does not start on its own. To get Nginx running, type:
sudo systemctl start nginx
If you are running a firewall, run the following commands to allow HTTP and HTTPS traffic:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
You can do a spot check right away to verify that everything went as planned by visiting your server’s public IP address in your web browser (see the note under the next heading to find out what your public IP address is if you do not have this information already):
http://server_domain_name_or_IP/
You will see the default CentOS 7 Nginx web page, which is there for informational and testing purposes. It should look something like this:
If you see this page, then your web server is now correctly installed.
Before continuing, you will probably want to enable Nginx to start when your system boots. To do so, enter the following command:
sudo systemctl enable nginx
Congratulations! Nginx is now installed and running!
Nginx Configuration Directory
Let’s enter the directory containing the Nginx configuration files.
cd /etc/nginx
ls
this directory to take a look around. In this tutorial we only care about a couple files and directories. The file nginx.conf
is the central configuration file for our Nginx instance. The sites-available
and sites-enabled
directories contain the site specific configuration files.
nginx.conf
It is a good practice to make backups of configuration files before editing them. Make a backup of of nginx.conf
.
sudo cp nginx.conf OLD.nginx.conf
Now open up the primary Nginx configuration file and take look around.
sudo nano nginx.conf
First of all, lines starting with a #
are comments and are ignored by Nginx. Directives need to end with a semicolon ;
. Configuration is organized into blocks such as http
, server
, location
. Nginx configuration files can also include other files. If l you look near the bottom of the http
block you should see a line, include /etc/nginx/sites-enabled/*;
. The configuration files in the sites-enabled
will be included as part of the Nginx configuration. The sites-enabled
will be where our website specific settings files will be. The nginx.conf
will be where the server wide settings will be.
server { listen 80; listen [::]:80; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }