AlmaLinuxRHEL Based

How To Configure Nginx Server Blocks on AlmaLinux 9

Configure Nginx Server Blocks on AlmaLinux 9

Nginx is a powerful and versatile web server and reverse proxy that has gained immense popularity due to its performance, scalability, and ease of use. When it comes to hosting multiple websites on a single server, Nginx’s server blocks feature proves to be invaluable. Server blocks allow you to define separate configurations for each domain, enabling you to host multiple websites efficiently. In this comprehensive guide, we will walk you through the process of configuring Nginx server blocks on AlmaLinux 9, a robust and open-source Linux distribution that provides a stable and secure platform for web hosting.

Prerequisites

Before we dive into the configuration process, ensure that you have the following prerequisites in place:

System Requirements

  • AlmaLinux 9 installed on your server
  • Root or sudo user access to execute administrative commands

Software Requirements

  • Nginx installed on your AlmaLinux 9 server
  • A domain name pointing to your server’s IP address

Installing Nginx on AlmaLinux 9

If you haven’t already installed Nginx on your AlmaLinux 9 server, follow these steps to get started:

Update System Packages

Before installing Nginx, it’s crucial to update your system packages to ensure you have the latest versions and security patches. Run the following command:

sudo dnf update -y

Install Nginx

Once your system is up to date, you can proceed with installing Nginx using the following command:

sudo dnf install nginx -y

Start and Enable Nginx Service

After the installation is complete, start the Nginx service and enable it to automatically start on system boot:

sudo systemctl start nginx
sudo systemctl enable nginx

Configuring Firewall

To allow incoming traffic to your Nginx web server, you need to configure your firewall to open the necessary ports. AlmaLinux 9 comes with a built-in firewall that you can configure using the firewall-cmd utility.

Open HTTP and HTTPS Ports

Run the following commands to permanently open the HTTP (port 80) and HTTPS (port 443) ports:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Setting Up Document Root Directories

Before configuring server blocks, you need to create separate document root directories for each domain you want to host. The document root is the directory where the website files for a specific domain will be stored.

Create Directories for Each Domain

Create a directory for each domain using the following command structure:

sudo mkdir -p /var/www/example.com/html

Replace example.com with your actual domain name.

Set Permissions

Ensure that the web server has the necessary permissions to access and serve files from the document root directories. Change the ownership of the directories to the appropriate user (e.g., nginx or www-data) based on your Nginx configuration.

Creating Server Block Files

Server block files contain the configuration for each domain hosted on your Nginx server. These files are typically stored in the /etc/nginx/conf.d/ directory.

Basic Server Block Configuration

Create a new server block file for your domain using a text editor. For example:

sudo nano /etc/nginx/conf.d/example.com.conf

Add the following basic configuration to the file:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com/html;
    index index.html;
}

Let’s break down the configuration directives:

  • listen: Specifies the port on which Nginx should listen for incoming requests. In this case, it is set to port 80 for HTTP traffic.
  • server_name: Defines the domain names that this server block should respond to. You can specify multiple domain names separated by spaces.
  • root: Sets the document root directory for the domain. This is where the website files are located.
  • index: Specifies the default index file to serve when a directory is requested.

Save the file and exit the text editor.

Testing Configuration

Before activating the new server block, it’s essential to test the Nginx configuration for any syntax errors.

Check Nginx Configuration for Errors

Run the following command to test the Nginx configuration:

sudo nginx -t

If the configuration test passes without any errors, you can proceed to reload Nginx to apply the changes.

Reload Nginx to Apply Changes

Use the following command to reload the Nginx service and apply the new configuration:

sudo systemctl reload nginx

Testing Server Block Setup

With the server block configuration in place and Nginx reloaded, it’s time to test your website.

Accessing the Website

Open a web browser and navigate to your domain name (e.g., http://example.com). You should see the default Nginx welcome page or your website if you have already placed your website files in the document root directory.

Troubleshooting Common Issues

If you encounter any issues while accessing your website, consider the following troubleshooting tips:

  • Double-check the server block configuration for any syntax errors or typos.
  • Ensure that the document root directory and its contents have the correct permissions.
  • Verify that your domain name is correctly pointing to your server’s IP address.
  • Check the Nginx error logs in the /var/log/nginx/ directory for any specific error messages.

Securing with SSL/TLS

To enhance the security of your website and protect sensitive data transmitted between the client and the server, it’s highly recommended to secure your Nginx server blocks with SSL/TLS certificates.

Install Certbot for SSL Certificates

Certbot is a popular tool that simplifies the process of obtaining and installing SSL certificates. Install Certbot and its Nginx plugin using the following command:

sudo dnf install certbot python3-certbot-nginx

Obtain and Install SSL Certificate

Run the following command to obtain and install an SSL certificate for your domain:

sudo certbot --nginx -d example.com

Follow the interactive prompts to provide the necessary information and agree to the Let’s Encrypt terms of service.

Automatic Renewal of Certificates

SSL certificates issued by Let’s Encrypt are valid for 90 days. To ensure uninterrupted security, Certbot automatically configures a renewal process that runs periodically to renew your certificates before they expire.

Congratulations! You have successfully set up Nginx server blocks. Thanks for using this tutorial to configure Nginx server blocks on your AlmaLinux 9 system. For additional or useful information, we recommend you check the official Nginx website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!

r00t

r00t is an experienced Linux enthusiast and technical writer with a passion for open-source software. With years of hands-on experience in various Linux distributions, r00t has developed a deep understanding of the Linux ecosystem and its powerful tools. He holds certifications in SCE and has contributed to several open-source projects. r00t is dedicated to sharing her knowledge and expertise through well-researched and informative articles, helping others navigate the world of Linux with confidence.
Back to top button