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
Configure Default MIME Types in Nginx
📖 Scenario: You are setting up a simple web server using Nginx. You want to make sure that when users request files without an extension, Nginx serves them with a default MIME type.
🎯 Goal: Configure Nginx to serve files with a default MIME type of text/plain when the file type is not recognized.
📋 What You'll Learn
Create an Nginx configuration block for a server
Set the default_type directive to text/plain
Add a location block to serve files from /usr/share/nginx/html
Print the final configuration to verify the settings
💡 Why This Matters
🌍 Real World
Web servers like Nginx need to serve files with correct MIME types so browsers know how to handle them. Setting a default type helps when files lack extensions.
💼 Career
Understanding how to configure Nginx is essential for DevOps roles managing web servers and ensuring proper content delivery.
Progress0 / 4 steps
1
Create the basic server block
Create an Nginx server block with listen 80; and server_name localhost; inside http { }.
Nginx
Hint
Remember to open and close the http and server blocks properly.
2
Set the default MIME type
Inside the server block, add the directive default_type text/plain; to set the default MIME type.
Nginx
Hint
The default_type directive sets the MIME type for files without an extension or unknown types.
3
Add a location block to serve files
Inside the server block, add a location / block with root /usr/share/nginx/html; to serve files from that directory.
Nginx
Hint
The location / block defines how to serve files for the root URL path.
4
Print the final Nginx configuration
Print the entire Nginx configuration to verify it includes default_type text/plain; and the location / block with the correct root.
Nginx
Hint
Use a print statement to output the full configuration as a string exactly as written.
Practice
(1/5)
1. What does the default_type directive do in an nginx configuration?
easy
A. Sets the MIME type for files without a known extension
B. Defines the default server port
C. Specifies the default root directory
D. Enables gzip compression by default
Solution
Step 1: Understand the purpose of default_type
The default_type directive tells nginx what MIME type to use when it cannot determine the file type from the extension.
Step 2: Match the directive to its function
Since it sets the fallback MIME type, it helps browsers know how to handle unknown files.
Final Answer:
Sets the MIME type for files without a known extension -> Option A
Quick Check:
default_type sets fallback MIME type = A [OK]
Hint: default_type sets fallback MIME type for unknown files [OK]
Common Mistakes:
Confusing default_type with server port settings
Thinking it sets root directory
Assuming it enables compression
2. Which of the following is the correct syntax to set the default MIME type to application/json inside an nginx http block?
easy
A. default_type 'application/json';
B. default_type application/json;
C. default_type: application/json;
D. default_type = application/json;
Solution
Step 1: Recall nginx directive syntax
nginx directives use the format: directive_name value; without equals or colons.
Step 2: Identify the correct syntax for default_type
The correct syntax is default_type application/json; with no quotes needed.
Final Answer:
default_type application/json; -> Option B
Quick Check:
Correct nginx directive syntax = D [OK]
Hint: nginx directives end with semicolon, no equals or colon [OK]
Common Mistakes:
Using equals sign (=) in directive
Adding colon (:) after directive
Putting quotes around MIME type unnecessarily
3. Given this nginx config snippet inside a location block:
default_type text/plain;
What will be the Content-Type header for a request to a file named unknownfile.xyz?
medium
A. text/plain
B. application/octet-stream
C. application/json
D. text/html
Solution
Step 1: Identify the default_type setting
The config sets default_type text/plain; inside the location block.
Step 2: Determine MIME type for unknown extension
Since .xyz is unknown, nginx uses the default_type value text/plain as Content-Type.
Final Answer:
text/plain -> Option A
Quick Check:
Unknown file uses default_type = A [OK]
Hint: Unknown extensions get default_type MIME type [OK]
Common Mistakes:
Assuming default is application/octet-stream
Confusing with text/html default
Ignoring location block override
4. You set default_type application/json; in your nginx server block, but requests to unknown file types still return text/html. What is the most likely cause?
medium
A. You forgot to reload nginx after changing config
B. The file extension is recognized, so default_type is ignored
C. default_type cannot be set in server block
D. Another default_type directive in a location block overrides it
Solution
Step 1: Understand nginx directive inheritance
Directives in location blocks override those in server blocks.
If a location block sets default_type text/html;, it will override the server block setting.
Final Answer:
Another default_type directive in a location block overrides it -> Option D
Quick Check:
Location block overrides server block default_type = B [OK]
Hint: Location block default_type overrides server block [OK]
Common Mistakes:
Thinking default_type can't be set in server block
Forgetting to reload nginx
Assuming file extension is always unknown
5. You want nginx to serve unknown file types as application/octet-stream globally, but for a specific /images location, serve unknown files as image/png. Which configuration correctly achieves this?
hard
A. Set default_type application/octet-stream; only in location /images
B. In server block: default_type image/png; and in location /images: default_type application/octet-stream;
C. In http block: default_type application/octet-stream; and in location /images: default_type image/png;
D. Set default_type image/png; only in http block
Solution
Step 1: Set global default_type in http block
Setting default_type application/octet-stream; in http block applies globally to all requests.
Step 2: Override default_type in specific location
Setting default_type image/png; inside location /images overrides the global setting for that path.
Final Answer:
In http block: default_type application/octet-stream; and in location /images: default_type image/png; -> Option C
Quick Check:
Global default_type overridden by location block = C [OK]
Hint: Set global default_type in http, override in location [OK]
Common Mistakes:
Reversing global and location settings
Setting default_type only in location without global