Skip to main content

Getting Started with Nginx

Welcome to Nginx

Nginx (pronounced "engine-x") is a high-performance web server that also works as a reverse proxy, load balancer, and HTTP cache. It was built to handle massive concurrency with minimal memory usage and is used by some of the highest-traffic sites on the internet.

Nginx powers over 30% of all websites. Understanding it is a core skill for any backend or DevOps engineer.

What Problems Does Nginx Solve?

When you run a Node.js app with node server.js, it listens on a port like 3000. But:

  • Users expect to connect on port 80 (HTTP) or 443 (HTTPS)
  • Node shouldn't handle SSL directly — it's expensive and complex
  • You may want to serve static files (images, CSS) without hitting Node at all
  • You might run multiple apps on one server

Nginx sits in front of your app and handles all of this.

Internet → Nginx (port 443, SSL) → Node.js app (port 3000, localhost)

What You'll Learn

  • Installation — setting up Nginx on Ubuntu/Debian servers
  • Server blocks — Nginx's equivalent of virtual hosts, one per domain
  • Reverse proxy — routing traffic from Nginx to a backend app
  • Static file serving — efficiently serving HTML, CSS, JS, and images
  • SSL with Let's Encrypt — enabling HTTPS for free using Certbot
  • Gzip compression — reducing response sizes for faster load times
  • Load balancing — distributing requests across multiple app instances

Prerequisites

  • A Linux server (EC2, Lightsail, or any VPS)
  • Basic terminal and SSH knowledge
  • A running backend app (Node.js, Python, etc.) to proxy to