Bird
Raised Fist0
Nginxdevops~30 mins

Default type handling in Nginx - Mini Project: Build & Apply

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
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

  1. 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.
  2. Step 2: Match the directive to its function

    Since it sets the fallback MIME type, it helps browsers know how to handle unknown files.
  3. Final Answer:

    Sets the MIME type for files without a known extension -> Option A
  4. 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

  1. Step 1: Recall nginx directive syntax

    nginx directives use the format: directive_name value; without equals or colons.
  2. Step 2: Identify the correct syntax for default_type

    The correct syntax is default_type application/json; with no quotes needed.
  3. Final Answer:

    default_type application/json; -> Option B
  4. 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

  1. Step 1: Identify the default_type setting

    The config sets default_type text/plain; inside the location block.
  2. Step 2: Determine MIME type for unknown extension

    Since .xyz is unknown, nginx uses the default_type value text/plain as Content-Type.
  3. Final Answer:

    text/plain -> Option A
  4. 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

  1. Step 1: Understand nginx directive inheritance

    Directives in location blocks override those in server blocks.
  2. Step 2: Identify override causing unexpected Content-Type

    If a location block sets default_type text/html;, it will override the server block setting.
  3. Final Answer:

    Another default_type directive in a location block overrides it -> Option D
  4. 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

  1. Step 1: Set global default_type in http block

    Setting default_type application/octet-stream; in http block applies globally to all requests.
  2. Step 2: Override default_type in specific location

    Setting default_type image/png; inside location /images overrides the global setting for that path.
  3. Final Answer:

    In http block: default_type application/octet-stream; and in location /images: default_type image/png; -> Option C
  4. 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
  • Using server block instead of http for global