Bird
Raised Fist0
Nginxdevops~5 mins

Index directive in Nginx - Commands & Configuration

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
When a user visits a website folder without specifying a file, the server needs to know which file to show first. The index directive tells the server which file to look for and display automatically. This makes browsing websites smoother and friendlier.
When you want the server to automatically show the homepage file like index.html when someone visits your website root.
When you have multiple possible homepage files and want to set the order the server tries them.
When you want to change the default homepage file name to something custom like home.html.
When you want to prevent directory listing by ensuring a file is shown instead of a folder content.
When you want to serve a default file for a specific website location or folder.
Config File - nginx.conf
nginx.conf
server {
    listen 80;
    server_name example.com;

    root /var/www/html;

    index index.html index.htm home.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

The server block defines a website configuration listening on port 80 for example.com.

The root sets the folder where website files are stored.

The index directive lists files the server tries in order when a folder is requested.

The location / block handles requests to the root URL, trying to serve files or returning 404 if not found.

Commands
This command tests the nginx configuration file for syntax errors before applying changes.
Terminal
sudo nginx -t
Expected OutputExpected
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
This command reloads nginx to apply the new configuration without stopping the server.
Terminal
sudo systemctl reload nginx
Expected OutputExpected
No output (command runs silently)
This command requests the root URL from the local server to check which index file is served automatically.
Terminal
curl http://localhost/
Expected OutputExpected
<!DOCTYPE html> <html> <head> <title>Welcome to example.com!</title> </head> <body> <h1>Hello from index.html</h1> </body> </html>
Key Concept

If you remember nothing else from this pattern, remember: the index directive tells nginx which file to serve first when a folder URL is requested.

Common Mistakes
Not reloading nginx after changing the index directive.
Nginx keeps using the old configuration until reloaded, so changes won't take effect.
Always run 'sudo nginx -t' to test and then 'sudo systemctl reload nginx' to apply changes.
Listing files in the wrong order in the index directive.
Nginx serves the first file it finds in the list, so order matters for priority.
Put the most preferred index file first in the list, e.g., 'index.html index.htm home.html'.
Forgetting to set the root directive correctly.
If root is wrong, nginx won't find the index files and may return 404 errors.
Ensure the root path points to the folder where your website files are stored.
Summary
The index directive sets which files nginx tries to serve automatically when a folder URL is requested.
Test nginx configuration with 'nginx -t' before reloading to avoid errors.
Reload nginx after changes to apply the new index settings without downtime.

Practice

(1/5)
1.

What is the main purpose of the index directive in nginx?

easy
A. To specify default files to serve when a directory is requested
B. To set the server's IP address
C. To configure SSL certificates
D. To define error pages

Solution

  1. Step 1: Understand the role of the index directive

    The index directive tells nginx which files to look for by default when a user requests a directory URL.
  2. Step 2: Match the purpose with the options

    Only To specify default files to serve when a directory is requested describes setting default files to serve in a folder, which matches the index directive's function.
  3. Final Answer:

    To specify default files to serve when a directory is requested -> Option A
  4. Quick Check:

    index directive = default files [OK]
Hint: Index sets default homepage files for folders [OK]
Common Mistakes:
  • Confusing index with server IP settings
  • Thinking index sets error pages
  • Mixing index with SSL configuration
2.

Which of the following is the correct syntax to set index.html and home.html as default files using the index directive?

?
easy
A. index: index.html; home.html;
B. index = index.html, home.html;
C. index { index.html home.html }
D. index index.html home.html;

Solution

  1. Step 1: Recall nginx index directive syntax

    The correct syntax lists files separated by spaces, ending with a semicolon.
  2. Step 2: Compare options with correct syntax

    index index.html home.html; matches the correct syntax: index index.html home.html;. Others use invalid punctuation or braces.
  3. Final Answer:

    index index.html home.html; -> Option D
  4. Quick Check:

    Correct syntax = index index.html home.html; [OK]
Hint: List files with spaces, end with semicolon [OK]
Common Mistakes:
  • Using commas between filenames
  • Using braces or colons incorrectly
  • Adding equal signs in directive
3.

Given this nginx config snippet:

location / {
    index about.html index.html;
}

If the folder contains index.html but not about.html, which file will nginx serve when a user visits /?

medium
A. 404 Not Found error
B. about.html
C. index.html
D. Directory listing

Solution

  1. Step 1: Understand index file priority

    nginx tries files in order: first about.html, then index.html.
  2. Step 2: Check which files exist

    about.html is missing, but index.html exists, so nginx serves index.html.
  3. Final Answer:

    index.html -> Option C
  4. Quick Check:

    First found file served = index.html [OK]
Hint: nginx serves first existing file in index list [OK]
Common Mistakes:
  • Assuming nginx serves first listed file regardless of existence
  • Expecting directory listing if first file missing
  • Thinking nginx returns error immediately
4.

Identify the error in this nginx config snippet:

location / {
    index index.html, home.html;
}
medium
A. Missing semicolon at the end
B. Using a comma between filenames is invalid syntax
C. index directive cannot be used inside location block
D. File names must be in quotes

Solution

  1. Step 1: Check syntax for index directive

    File names must be separated by spaces, not commas.
  2. Step 2: Identify the error in the snippet

    The comma between index.html and home.html is invalid syntax.
  3. Final Answer:

    Using a comma between filenames is invalid syntax -> Option B
  4. Quick Check:

    No commas allowed in index list [OK]
Hint: Separate files with spaces, no commas [OK]
Common Mistakes:
  • Adding commas between filenames
  • Omitting semicolon
  • Thinking quotes are required
5.

You want nginx to serve main.html as the default file, but only if index.html is missing. Which index directive correctly achieves this?

hard
A. index index.html main.html;
B. index main.html index.html;
C. index main.html;
D. index index.html;

Solution

  1. Step 1: Understand index file priority order

    nginx serves the first existing file in the list from left to right.
  2. Step 2: Choose order to serve main.html only if index.html missing

    To serve main.html only if index.html is missing, index.html must be first, then main.html.
  3. Final Answer:

    index index.html main.html; -> Option A
  4. Quick Check:

    First existing file served = index.html then main.html [OK]
Hint: List index.html first to prefer it over main.html [OK]
Common Mistakes:
  • Reversing file order
  • Listing only one file
  • Expecting nginx to skip files in order