0
0
NginxHow-ToBeginner · 3 min read

How to Set Default Server in Nginx: Simple Guide

To set a default server in Nginx, add the default_server parameter to the listen directive inside a server block. This server will handle all requests that do not match other server blocks.
📐

Syntax

The default_server parameter is added to the listen directive inside a server block. It marks that server as the default for the specified IP and port.

Example parts:

  • listen 80 default_server; - listens on port 80 and sets this server as default.
  • server_name example.com; - defines the domain this server responds to.
nginx
server {
    listen 80 default_server;
    server_name example.com;
    # other settings
}
💻

Example

This example shows two server blocks. The first is the default server that handles all unmatched requests on port 80. The second handles requests for mywebsite.com.

nginx
server {
    listen 80 default_server;
    server_name _;
    return 444;
}

server {
    listen 80;
    server_name mywebsite.com;
    root /var/www/mywebsite;
    index index.html;
}
Output
When a request comes to port 80 that does not match 'mywebsite.com', Nginx returns a 444 (connection closed) response from the default server.
⚠️

Common Pitfalls

Common mistakes include:

  • Not using default_server in the listen directive, so no server is set as default.
  • Setting multiple servers as default_server on the same IP and port, causing conflicts.
  • Using server_name _; or wildcard incorrectly; default_server is what controls default behavior.
nginx
server {
    listen 80;
    server_name _;
    # This is NOT default server because 'default_server' is missing
}

server {
    listen 80 default_server;
    server_name _;
    # Correct default server
}
📊

Quick Reference

Tips to set default server in Nginx:

  • Use listen [port] default_server; in exactly one server block per IP:port.
  • The default server handles requests that do not match any server_name.
  • Use server_name _; as a catch-all name if needed.
  • Test config with nginx -t before reload.

Key Takeaways

Add 'default_server' to the listen directive to set the default server in Nginx.
Only one server block per IP:port should have 'default_server' to avoid conflicts.
The default server handles requests that don't match any server_name.
Use 'nginx -t' to check configuration syntax before reloading Nginx.
Setting 'server_name _;' is optional but common for catch-all default servers.