Installing Nginx Web Server on Ubuntu 26.04
Source: Dev.to
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
My App
## Hello World from Nginx on Ubuntu 26.04
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.