☁️Hosting·5 min read

Nginx Server Guide

Configure Nginx for static sites, reverse proxies, and load balancing.

This guide covers the Nginx blueprint instance.

Accessing Your Server

ssh -i your-key.pem bitnami@YOUR-IP

Nginx Basics

Check status:

sudo systemctl status nginx

Restart / reload:

sudo systemctl restart nginx

sudo nginx -s reload

Test configuration:

sudo nginx -t

Serving a Static Website

1.Upload your site files:

sudo mkdir -p /var/www/mysite

scp -i key.pem -r ./dist/* bitnami@YOUR-IP:/var/www/mysite/

2.Create a server block:

sudo nano /etc/nginx/sites-available/mysite

server {

listen 80;

server_name yourdomain.com www.yourdomain.com;

root /var/www/mysite;

index index.html;

location / {

try_files $uri $uri/ =404;

}

}

3.Enable it:

sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/

sudo nginx -t && sudo systemctl reload nginx

Setting Up as a Reverse Proxy

For Node.js, Python, or any backend:

server {

listen 80;

server_name api.yourdomain.com;

location / {

proxy_pass http://127.0.0.1:3000;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

}

}

SSL with Certbot

sudo apt install certbot python3-certbot-nginx

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

Auto-renewal is configured by default.

Performance Tuning

Add to the http block in /etc/nginx/nginx.conf:

gzip on;

gzip_types text/plain text/css application/json application/javascript;

client_max_body_size 50M;

keepalive_timeout 65;

Enable caching for static assets:

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {

expires 30d;

add_header Cache-Control "public, no-transform";

}

Common Log Locations

Access log: /var/log/nginx/access.log
Error log: /var/log/nginx/error.log
Knowledge Base — NexusHost | NexusHost