How to Install Nginx on CentOS 8

Published on

3 min read

Install Nginx on CentOS 8

Nginx pronounced “engine x” is an open-source, high-performance HTTP and reverse proxy server responsible for handling the load of some of the largest sites on the Internet. It can be used as a standalone web server, load balancer, content cache, and reverse proxy for HTTP and non-HTTP servers.

Compared to Apache, Nginx can handle a much large number of concurrent connections and has a smaller memory footprint per connection.

This tutorial explains how to install and manage Nginx on CentOS 8.

Prerequisites

Before continuing, make sure you are logged in as a user with sudo privileges , and you don’t have Apache or any other process running on port 80 or 443.

Installing Nginx on CentOS 8

Starting with CentOS 8, the Nginx package is available in the default CentOS repositories.

Installing Nginx on CentOS 8 is as simple as typing:

sudo yum install nginx

Once the installation is complete, enable and start the Nginx service with:

sudo systemctl enable nginxsudo systemctl start nginx

To verify that the service is running, check its status:

sudo systemctl status nginx

The output should look something like this:

● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2019-10-06 18:35:55 UTC; 17min ago
   ...

Adjusting the Firewall

FirewallD is the default firewall solution on Centos 8.

During the installation, Nginx creates a firewalld service files with predefined rules for allowing access to HTTP (80) and HTTPS (443) ports.

Use the following commands to open the necessary ports permanently:

sudo firewall-cmd --permanent --zone=public --add-service=httpsudo firewall-cmd --permanent --zone=public --add-service=httpssudo firewall-cmd --reload

Now, you can test your Nginx installation, by opening http://YOUR_IP in your web browser. You should see the default Nginx welcome page, which should look like the image below:

Nginx CentOS landing page

Nginx Configuration File’s Structure and Best Practices

  • All Nginx configuration files are located in the /etc/nginx/ directory.
  • The main Nginx configuration file is /etc/nginx/nginx.conf.
  • Creating a separate configuration file for each domain makes the server easier to maintain.
  • The Nginx server block files must end with .conf and be stored in /etc/nginx/conf.d directory. You can have as many server blocks as you want.
  • It is a good practice to follow a standard naming convention. For example, if the domain name is mydomain.com then the configuration file should be named mydomain.com.conf
  • If you use repeatable configuration segments in your domain server blocks, it is a good idea to refactor those segments into snippets.
  • Nginx log files (access.log and error.log) are located in the /var/log/nginx/ directory. It is recommended to have a different access and error log files for each server block.
  • You can set your domain document root directory to any location you want. The most common locations for webroot include:
    • /home/<user_name>/<site_name>
    • /var/www/<site_name>
    • /var/www/html/<site_name>
    • /opt/<site_name>
    • /usr/share/nginx/html

Conclusion

Congratulations, you have successfully installed Nginx on your CentOS 8 server. You’re now ready to start deploying your applications and use Nginx as a web or proxy server.

You can manage the Nginx service in the same way as any other systemd unit.

To be able to host multiple websites on one machine, you’ll need to create a server blocks for each domain.

If you have any questions or feedback, feel free to leave a comment.