Bird
Raised Fist0
Nginxdevops~5 mins

Default type handling in Nginx - Cheat Sheet & Quick Revision

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
Recall & Review
beginner
What is the purpose of the default_type directive in nginx?
The default_type directive sets the MIME type that nginx uses when it cannot determine the file type of a response. It helps browsers understand how to handle the content.
Click to reveal answer
beginner
What is the default value of default_type in nginx if not explicitly set?
The default value is text/plain. This means nginx will treat unknown file types as plain text.
Click to reveal answer
intermediate
How does nginx determine the MIME type of a file before using default_type?
Nginx first checks the file extension against the mime.types file. If it finds a match, it uses that MIME type. If not, it falls back to default_type.
Click to reveal answer
beginner
Show an example of setting default_type to application/octet-stream in nginx configuration.
In the nginx config file, inside the http or server block, add:
default_type application/octet-stream;
This tells nginx to treat unknown files as binary data.
Click to reveal answer
intermediate
Why might you want to change the default_type from its default text/plain?
Changing default_type can improve security and user experience. For example, setting it to application/octet-stream forces downloads instead of displaying raw text, which can prevent code exposure.
Click to reveal answer
What does the default_type directive control in nginx?
AThe default server port
BThe maximum file upload size
CThe default root directory
DThe MIME type used when file type is unknown
If nginx cannot find a MIME type for a file, what is the default default_type value it uses?
Aapplication/json
Btext/plain
Ctext/html
Dapplication/octet-stream
Where does nginx look first to determine a file's MIME type?
Adefault_type directive
Berror_page directive
Cmime.types file
Dserver_name directive
What is a common reason to set default_type to application/octet-stream?
ATo force file downloads
BTo display files as plain text
CTo enable caching
DTo increase server speed
Which nginx block can contain the default_type directive?
Ahttp or server block
Blocation block only
Cevents block
Dupstream block
Explain how nginx decides which MIME type to send to the client when serving a file.
Think about file extensions and fallback types.
You got /3 concepts.
    Describe a scenario where changing the default_type directive improves security or user experience.
    Consider what happens if unknown files are shown as plain text.
    You got /3 concepts.

      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