Basic Server Block
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
Multiple Server Blocks
# Site 1
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1;
}
# Site 2
server {
listen 80;
server_name site2.com www.site2.com;
root /var/www/site2;
}
# Default server (catch-all)
server {
listen 80 default_server;
server_name _;
return 444; # Close connection without response
}
Server Name Matching
# Exact match (fastest)
server_name example.com;
# Multiple names
server_name example.com www.example.com;
# Wildcard prefix
server_name *.example.com;
# Wildcard suffix
server_name example.*;
# Regex (slowest)
server_name ~^www\.(?<domain>.+)$;
Listen Directive Options
# Basic
listen 80;
listen 443 ssl;
# IPv6
listen [::]:80;
listen [::]:443 ssl;
# Default server
listen 80 default_server;
# Specific IP
listen 192.168.1.1:80;
# HTTP/2
listen 443 ssl http2;
# Unix socket
listen unix:/var/run/nginx.sock;
WWW Redirect
# Redirect www to non-www
server {
listen 80;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
# Redirect non-www to www
server {
listen 80;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
HTTP to HTTPS Redirect
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
beginner | Core Concepts | Updated 2025-01-15
- nginx
- server block
- virtual host
- server_name
- listen