Bird
Raised Fist0
Nginxdevops~10 mins

Root directive in Nginx - Step-by-Step Execution

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
Process Flow - Root directive
Start nginx config parsing
Find server block
Look for root directive
Set root path for requests
Receive HTTP request
Combine root path + URI
Serve file from combined path
Send response to client
The root directive sets the base folder for serving files. When a request comes, nginx combines this root path with the request URI to find the file to serve.
Execution Sample
Nginx
server {
    listen 80;
    root /var/www/html;
}
This config sets the root folder to /var/www/html for all requests on port 80.
Process Table
StepActionValue/ResultNotes
1Parse server blockFound root directiveroot = /var/www/html
2Receive HTTP requestGET /index.htmlClient requests /index.html
3Combine root + URI/var/www/html/index.htmlFull file path to serve
4Check file existenceFile existsFile found at path
5Serve fileSend contents of /var/www/html/index.htmlResponse sent to client
6End requestRequest completeCycle finished
💡 Request served successfully using root path combined with URI
Status Tracker
VariableStartAfter Step 2After Step 3Final
rootundefined/var/www/html/var/www/html/var/www/html
request_uriundefined/index.html/index.html/index.html
full_pathundefinedundefined/var/www/html/index.html/var/www/html/index.html
Key Moments - 2 Insights
Why does nginx combine the root path with the request URI?
Because the root directive only sets the base folder. To find the exact file to serve, nginx adds the requested URI path to this base folder, as shown in step 3 of the execution table.
What happens if the root directive is missing?
Nginx won't know where to find files to serve, so requests may fail. The execution table starts with finding the root directive (step 1), which is essential for serving files.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the full file path nginx tries to serve at step 3?
A/var/www/index.html
B/index.html
C/var/www/html/index.html
D/html/index.html
💡 Hint
Check the 'Combine root + URI' action in step 3 of the execution table.
At which step does nginx confirm the requested file exists?
AStep 4
BStep 2
CStep 3
DStep 5
💡 Hint
Look for the 'Check file existence' action in the execution table.
If the root directive was changed to /usr/share/nginx/html, what would be the full path at step 3?
A/var/www/html/index.html
B/usr/share/nginx/html/index.html
C/usr/share/index.html
D/nginx/html/index.html
💡 Hint
Refer to the variable_tracker for 'root' and how it combines with 'request_uri'.
Concept Snapshot
root directive syntax:
root /path/to/folder;

Sets the base folder for serving files.
Nginx combines root + request URI to find files.
Missing root causes file serving failure.
Used inside server or location blocks.
Full Transcript
The root directive in nginx sets the base folder where files are served from. When nginx receives a request, it takes the root path and adds the requested URI to form the full file path. For example, if root is /var/www/html and the request is /index.html, nginx looks for /var/www/html/index.html. The execution table shows parsing the config, receiving the request, combining paths, checking file existence, and serving the file. Variables like root, request_uri, and full_path change as the request is processed. Understanding this flow helps avoid common mistakes like missing root or wrong paths.

Practice

(1/5)
1. What does the root directive do in an nginx configuration?
easy
A. It sets the maximum number of client connections.
B. It defines the server's IP address.
C. It specifies the port number nginx listens on.
D. It sets the folder where nginx looks for files to serve.

Solution

  1. Step 1: Understand the purpose of the root directive

    The root directive tells nginx which folder to use as the base path for serving files.
  2. Step 2: Compare with other options

    Other options like IP address, port, or client limits are set by different directives, not root.
  3. Final Answer:

    It sets the folder where nginx looks for files to serve. -> Option D
  4. Quick Check:

    root = folder path for files [OK]
Hint: Root sets the base folder for files nginx serves [OK]
Common Mistakes:
  • Confusing root with listen directive
  • Thinking root sets server IP or port
  • Assuming root controls client limits
2. Which of the following is the correct syntax to set the root directory to /var/www/html inside a location block?
easy
A. root = /var/www/html;
B. root /var/www/html;
C. root: /var/www/html;
D. root /var/www/html

Solution

  1. Step 1: Recall nginx directive syntax

    Directives use the format: directive_name value; without equals or colons.
  2. Step 2: Check each option

    root /var/www/html; uses correct syntax: root /var/www/html;. Options A and C use invalid symbols, D misses the semicolon.
  3. Final Answer:

    root /var/www/html; -> Option B
  4. Quick Check:

    Correct syntax = root path followed by semicolon [OK]
Hint: No equals sign or colon; end with semicolon [OK]
Common Mistakes:
  • Using equals sign (=) after root
  • Omitting semicolon at end
  • Using colon (:) instead of space
3. Given this nginx config snippet inside a server block:
location /images/ {
    root /var/www/data;
}

If a client requests /images/pic.jpg, which file path will nginx try to serve?
medium
A. /var/www/data/images/pic.jpg
B. /var/www/data/pic.jpg
C. /images/pic.jpg
D. /var/www/html/images/pic.jpg

Solution

  1. Step 1: Understand root with location

    The root directive appends the full request URI to the root path.
  2. Step 2: Combine root and request URI

    Request URI is /images/pic.jpg. Root is /var/www/data. So nginx looks for /var/www/data/images/pic.jpg.
  3. Final Answer:

    /var/www/data/images/pic.jpg -> Option A
  4. Quick Check:

    root + full URI = file path [OK]
Hint: Root + full URI = file path nginx serves [OK]
Common Mistakes:
  • Assuming root replaces location prefix
  • Ignoring location path in file path
  • Confusing root with alias directive
4. You set root /var/www/html; inside a location /static/ block, but requests to /static/style.css return 404 errors. What is the most likely cause?
medium
A. The root path is incorrect or missing the /static/ folder.
B. You forgot to restart nginx after changing the config.
C. The location block should use alias instead of root.
D. The file style.css is not readable by nginx.

Solution

  1. Step 1: Understand root with location prefix

    Root appends the full URI, so nginx looks for /var/www/html/static/style.css.
  2. Step 2: Check folder structure

    If the actual files are in /var/www/html without the static subfolder, nginx won't find them, causing 404.
  3. Final Answer:

    The root path is incorrect or missing the /static/ folder. -> Option A
  4. Quick Check:

    Root + URI must match actual file path [OK]
Hint: Root must include location path or use alias [OK]
Common Mistakes:
  • Not matching root path to location URI
  • Assuming config reload fixes path errors
  • Confusing root and alias usage
5. You want nginx to serve files from /srv/www/site when users request /files/, but without including /files/ in the file path. Which configuration correctly achieves this?
hard
A. location /files/ { root /srv/www/site; }
B. location /files/ { alias /srv/www/site/files; }
C. location /files/ { alias /srv/www/site/; }
D. location /files/ { root /srv/www/site/files; }

Solution

  1. Step 1: Understand root vs alias behavior

    Root appends full URI to path, alias replaces location prefix with given path.
  2. Step 2: Match requirement to config

    To serve files from /srv/www/site without /files/ in path, alias must be used.
  3. Final Answer:

    location /files/ { alias /srv/www/site/; } -> Option C
  4. Quick Check:

    Use alias to strip location prefix from file path [OK]
Hint: Use alias to avoid adding location prefix to path [OK]
Common Mistakes:
  • Using root when alias is needed
  • Missing trailing slash in alias path
  • Confusing root and alias effects