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
2. Install Nginx:
$ sudo apt install nginx -y
3. Verify the installed version:
$ nginx -version
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
2. Check the service status:
$ sudo systemctl status nginx
3. Stop or restart the service when needed:
$ sudo systemctl stop nginx
$ sudo systemctl restart nginx
Configure Firewall Rules
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
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
2. Create a sample HTML page:
$ sudo nano /var/www/app.example.com/index.html
<!DOCTYPE html>
<html>
<head><title>My App</title></head>
<body><h1>Hello World from Nginx on Ubuntu 26.04</h1></body>
</html>
3. Create the virtual host configuration:
$ sudo nano /etc/nginx/sites-available/app.example.com.conf
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;
}
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
Verify the virtual host is serving:
$ curl http://app.example.com
Secure with Let's Encrypt SSL
1. Install Certbot with the Nginx plugin:
$ sudo apt install certbot python3-certbot-nginx -y
2. Generate and install the certificate:
$ sudo certbot --nginx -d app.example.com --agree-tos
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
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
http2to thelistendirective
For the full guide with additional tips, visit the original article on Vultr Docs.
Top comments (0)