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
Using the Expires Directive in Nginx
📖 Scenario: You are managing a website and want to improve its loading speed by telling browsers to cache static files like images and stylesheets. This helps visitors load your site faster on repeat visits.
🎯 Goal: You will create an Nginx configuration that uses the expires directive to set caching times for different file types.
📋 What You'll Learn
Create a server block listening on port 80
Add a location block for /images/ to cache images for 30 days
Add a location block for /css/ to cache CSS files for 7 days
Add a location block for /js/ to cache JavaScript files for 7 days
Use the expires directive with exact values as specified
💡 Why This Matters
🌍 Real World
Web servers use caching headers to reduce load times and bandwidth by telling browsers how long to keep files.
💼 Career
DevOps engineers and system administrators often configure Nginx to optimize website performance and user experience.
Progress0 / 4 steps
1
Create the basic server block
Create an Nginx server block that listens on port 80 and serves files from /var/www/html using the root directive.
Nginx
Hint
Use server {} block with listen 80; and root /var/www/html;.
2
Add caching for images
Inside the server block, add a location /images/ block that sets expires 30d; to cache images for 30 days.
Nginx
Hint
Use location /images/ { expires 30d; } inside the server block.
3
Add caching for CSS and JavaScript
Add two more location blocks inside the server block: location /css/ and location /js/. Set expires 7d; in both to cache CSS and JavaScript files for 7 days.
Nginx
Hint
Add location /css/ { expires 7d; } and location /js/ { expires 7d; } inside the server block.
4
Display the final Nginx configuration
Print the complete Nginx server block configuration you created.
Nginx
Hint
Print the entire server block configuration exactly as written.
Practice
(1/5)
1. What is the main purpose of the expires directive in an nginx configuration?
easy
A. To specify the file upload size limit
B. To control how long browsers cache files before requesting them again
C. To limit the number of simultaneous connections
D. To set the server's time zone
Solution
Step 1: Understand the role of expires in nginx
The expires directive tells browsers how long to keep files cached before checking for updates.
Step 2: Compare options with this function
Only To control how long browsers cache files before requesting them again matches this purpose; others relate to different server settings.
Final Answer:
To control how long browsers cache files before requesting them again -> Option B
Quick Check:
Expires directive = browser cache time [OK]
Hint: Expires controls browser cache duration for files [OK]
Common Mistakes:
Confusing expires with server timezone settings
Thinking expires limits connections
Mixing expires with upload size limits
2. Which of the following is the correct syntax to set the expires directive to 1 day in nginx?
easy
A. expires = 1 day;
B. expires 1 day
C. expires 24hours;
D. expires 1d;
Solution
Step 1: Recall nginx expires syntax
The correct syntax uses a time value followed by a semicolon, e.g., expires 1d; for one day.
Step 2: Check each option for syntax correctness
expires = 1 day; uses invalid '=' and full word 'day'; expires 1 day lacks semicolon; expires 24hours; uses invalid time unit '24hours'. Only B matches correct syntax: expires 1d;.
Final Answer:
expires 1d; -> Option D
Quick Check:
Correct syntax ends with semicolon and uses short time unit [OK]
Hint: Use short time units with semicolon, like 'expires 1d;' [OK]
Common Mistakes:
Omitting semicolon at the end
Using spaces in time value
Writing full words like 'day' instead of 'd'
3. Given this nginx config snippet:
location ~* \.(jpg|jpeg|png)$ {
expires 30d;
}
What will the browser do when accessing a PNG file?
medium
A. Cache the PNG file for 30 seconds
B. Never cache the PNG file
C. Cache the PNG file for 30 days before re-requesting
D. Immediately re-request the PNG file every time
Solution
Step 1: Analyze the regex and expires directive
The location matches .jpg, .jpeg, and .png files and sets expires 30d;, meaning 30 days caching.
Step 2: Understand browser caching behavior
Browsers will keep the PNG file cached for 30 days before checking for updates.
Final Answer:
Cache the PNG file for 30 days before re-requesting -> Option C
Quick Check:
Expires 30d means 30 days cache [OK]
Hint: Regex matches file types; expires sets cache time [OK]
Common Mistakes:
Confusing days with seconds
Ignoring regex file matching
Assuming no caching without explicit 'no-cache'
4. Identify the error in this nginx config:
location /static/ {
expires 10days;
}
medium
A. The time unit '10days' is invalid; should be '10d'
B. Missing semicolon after expires directive
C. Location block syntax is incorrect
D. Expires directive cannot be used inside location
Solution
Step 1: Check the expires time unit
The correct time unit uses short forms like 'd' for days. '10days' is invalid syntax.
Step 2: Verify other syntax elements
Semicolon is present, location syntax is correct, and expires can be used inside location.
Final Answer:
The time unit '10days' is invalid; should be '10d' -> Option A
Quick Check:
Use short time units like 'd' not full words [OK]
Hint: Use short units like 'd' for days, not full words [OK]
Common Mistakes:
Writing full words for time units
Forgetting semicolon (not the case here)
Thinking expires can't be in location block
5. You want to set caching so that CSS files are cached for 7 days, but HTML files are never cached. Which nginx config snippet achieves this?
Setting expires -1; disables caching (forces no cache) for files.
Step 2: Check each option for correct disables and enables
location ~* \.css$ { expires 7d; } location ~* \.html$ { expires -1; } uses expires 7d; for CSS and expires -1; for HTML, which is correct. Others use invalid or incorrect values.