DEV Community

Cover image for Installing Nginx Web Server on Ubuntu 26.04
Aashish Chaurasiya for Vultr

Posted on • Originally published at docs.vultr.com

Installing Nginx Web Server on Ubuntu 26.04

Nginx is a high-performance web server built for concurrency, powering content delivery, reverse proxying, and load balancing at scale. This guide goes beyond a basic install: it configures a virtual host for your domain and secures it with a free Let's Encrypt SSL certificate. By the end, you'll have Nginx serving your domain over HTTPS with automatic certificate renewal in place.


Install Nginx

Nginx is available in Ubuntu 26.04's default APT repository.

1. Update the APT package index:

$ sudo apt update
Enter fullscreen mode Exit fullscreen mode

2. Install Nginx:

$ sudo apt install nginx -y
Enter fullscreen mode Exit fullscreen mode

3. Verify the installed version:

$ nginx -version
Enter fullscreen mode Exit fullscreen mode

Configure Nginx as a System Service

Enable Nginx to start automatically when the server boots.

1. Enable and start the service:

$ sudo systemctl enable nginx
$ sudo systemctl start nginx
Enter fullscreen mode Exit fullscreen mode

2. Check the service status:

$ sudo systemctl status nginx
Enter fullscreen mode Exit fullscreen mode

3. Stop or restart the service when needed:

$ sudo systemctl stop nginx
$ sudo systemctl restart nginx
Enter fullscreen mode Exit fullscreen mode

Configure Firewall Rules

$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
Enter fullscreen mode Exit fullscreen mode

Open http://YOUR-SERVER-IP in a browser. The Nginx default page confirms the service is running.


Create a Virtual Host

Virtual hosts let Nginx serve different sites from the same server.

1. Create the web root directory:

$ sudo mkdir -p /var/www/app.example.com
$ sudo chown -R www-data:www-data /var/www/app.example.com
Enter fullscreen mode Exit fullscreen mode

2. Create a sample HTML page:

$ sudo nano /var/www/app.example.com/index.html
Enter fullscreen mode Exit fullscreen mode
<!DOCTYPE html>
<html>
<head><title>My App</title></head>
<body><h1>Hello World from Nginx on Ubuntu 26.04</h1></body>
</html>
Enter fullscreen mode Exit fullscreen mode

3. Create the virtual host configuration:

$ sudo nano /etc/nginx/sites-available/app.example.com.conf
Enter fullscreen mode Exit fullscreen mode
server {
    listen 80;
    server_name app.example.com;
    root /var/www/app.example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    access_log /var/log/nginx/app.example.com-access.log;
    error_log /var/log/nginx/app.example.com-error.log;
}
Enter fullscreen mode Exit fullscreen mode

4. Enable the site, test the configuration, and reload:

$ sudo ln -s /etc/nginx/sites-available/app.example.com.conf /etc/nginx/sites-enabled/
$ sudo nginx -t
$ sudo systemctl reload nginx
Enter fullscreen mode Exit fullscreen mode

Verify the virtual host is serving:

$ curl http://app.example.com
Enter fullscreen mode Exit fullscreen mode

Secure with Let's Encrypt SSL

1. Install Certbot with the Nginx plugin:

$ sudo apt install certbot python3-certbot-nginx -y
Enter fullscreen mode Exit fullscreen mode

2. Generate and install the certificate:

$ sudo certbot --nginx -d app.example.com --agree-tos
Enter fullscreen mode Exit fullscreen mode

Certbot obtains the certificate, updates the virtual host to enable HTTPS, and configures an HTTP-to-HTTPS redirect automatically.

3. Test the auto-renewal timer:

$ sudo certbot renew --dry-run
Enter fullscreen mode Exit fullscreen mode

If the dry run completes without errors, automatic renewal is configured correctly.


Next Steps

Nginx is now running and serving your domain over HTTPS. From here you can:

  • Add PHP via PHP-FPM to serve dynamic content alongside Nginx
  • Configure Nginx as a reverse proxy in front of a Node.js or Python application
  • Enable HTTP/2 support by adding http2 to the listen directive

For the full guide with additional tips, visit the original article on Vultr Docs.

Top comments (0)