Bird
Raised Fist0
Nginxdevops~20 mins

HTTP/2 configuration in Nginx - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
HTTP/2 Nginx Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
1:30remaining
Check if HTTP/2 is enabled on Nginx
You run the command curl -I --http2 https://example.com on a server with Nginx configured. What output line confirms HTTP/2 is enabled?
AHTTP/2 200
BHTTP/1.1 200 OK
CHTTP/3 200
DHTTP/1.0 200 OK
Attempts:
2 left
💡 Hint
Look for the HTTP version in the response headers.
❓ Configuration
intermediate
1:30remaining
Enable HTTP/2 in Nginx server block
Which Nginx server block directive correctly enables HTTP/2 for HTTPS?
Alisten 443 ssl http2;
Blisten 443 ssl;
Clisten 443 http2;
Dlisten 80 http2;
Attempts:
2 left
💡 Hint
HTTP/2 requires SSL and the correct listen directive.
❓ Troubleshoot
advanced
2:00remaining
Why is HTTP/2 not working despite configuration?
You configured Nginx with listen 443 ssl http2; but HTTP/2 is not working. Which is the most likely cause?
ANot setting server_name directive
BUsing port 80 instead of 443
CNot enabling gzip compression
DMissing valid SSL certificate and key files
Attempts:
2 left
💡 Hint
HTTP/2 requires a secure connection.
✅ Best Practice
advanced
2:00remaining
Recommended TLS versions for HTTP/2 in Nginx
Which TLS versions should you enable in Nginx to support HTTP/2 securely?
ATLSv1.0, TLSv1.1, TLSv1.2
BTLSv1.0 and TLSv1.1 only
CTLSv1.2 and TLSv1.3 only
DSSLv3 and TLSv1.2
Attempts:
2 left
💡 Hint
Older TLS versions are insecure and not recommended.
🔀 Workflow
expert
2:30remaining
Order steps to enable HTTP/2 on Nginx with SSL
Put these steps in the correct order to enable HTTP/2 on an Nginx server with SSL:
A2,1,4,3
B1,4,2,3
C1,2,4,3
D4,1,2,3
Attempts:
2 left
💡 Hint
Think about getting certificates before configuring paths.

Practice

(1/5)
1. What is the correct way to enable HTTP/2 in an nginx server block?
easy
A. Add http2 to the location block
B. Add http2 to the server_name directive
C. Add http2 to the listen directive with SSL enabled
D. Add http2 to the root directive

Solution

  1. Step 1: Understand HTTP/2 enabling in nginx

    HTTP/2 is enabled by adding the http2 parameter to the listen directive, which must be used with SSL (HTTPS).
  2. Step 2: Identify correct directive usage

    The http2 parameter does not belong in server_name, root, or location blocks.
  3. Final Answer:

    Add http2 to the listen directive with SSL enabled -> Option C
  4. Quick Check:

    Enable HTTP/2 by adding http2 to listen with SSL [OK]
Hint: Add 'http2' only in listen directive with SSL [OK]
Common Mistakes:
  • Adding http2 to server_name or root directives
  • Forgetting to enable SSL when using http2
  • Placing http2 inside location blocks
2. Which of the following is the correct syntax to enable HTTP/2 on port 443 in nginx?
easy
A. listen 443 ssl;
B. listen http2 443 ssl;
C. listen 443 http2;
D. listen 443 ssl http2;

Solution

  1. Step 1: Review nginx listen directive syntax

    The correct order is listen [port] ssl http2; to enable SSL and HTTP/2 on the port.
  2. Step 2: Check each option

    listen 443 ssl http2; uses correct syntax: listen 443 ssl http2;. listen http2 443 ssl; reverses order but is invalid. listen 443 ssl; misses http2. listen 443 http2; misses ssl, which is required for http2.
  3. Final Answer:

    listen 443 ssl http2; -> Option D
  4. Quick Check:

    Correct syntax is 'listen 443 ssl http2;' [OK]
Hint: Use 'listen 443 ssl http2;' exactly for HTTP/2 [OK]
Common Mistakes:
  • Omitting ssl when enabling http2
  • Placing http2 before ssl in listen directive
  • Using http2 without SSL on port 443
3. Given this nginx server block snippet, what will happen when a client connects?
server {
    listen 443 ssl http2;
    ssl_certificate /etc/ssl/cert.pem;
    ssl_certificate_key /etc/ssl/key.pem;
    server_name example.com;
}
medium
A. The server will accept HTTPS connections using HTTP/2 protocol
B. The server will accept HTTP connections only, no HTTP/2
C. The server will reject connections due to missing http2 directive
D. The server will accept HTTPS but use HTTP/1.1 only

Solution

  1. Step 1: Analyze listen directive

    The listen directive includes ssl and http2, enabling HTTPS with HTTP/2 support.
  2. Step 2: Confirm SSL certificates presence

    SSL certificate and key files are specified, so HTTPS can work properly.
  3. Final Answer:

    The server will accept HTTPS connections using HTTP/2 protocol -> Option A
  4. Quick Check:

    listen with ssl and http2 means HTTPS + HTTP/2 enabled [OK]
Hint: ssl + http2 in listen means HTTPS with HTTP/2 [OK]
Common Mistakes:
  • Assuming HTTP/2 works without ssl
  • Confusing HTTP and HTTPS ports
  • Ignoring the http2 parameter in listen
4. You added http2 to your nginx listen directive but HTTP/2 is not working. Which configuration mistake could cause this?
medium
A. Forgetting to enable SSL (missing ssl in listen directive)
B. Using http2 in the server_name directive
C. Setting listen to port 80 with http2
D. Adding http2 inside the location block

Solution

  1. Step 1: Understand HTTP/2 requirements in nginx

    HTTP/2 requires SSL (HTTPS) to be enabled in nginx; without ssl in the listen directive, HTTP/2 won't work.
  2. Step 2: Evaluate other options

    Options A, C, and D are invalid uses of http2 but the main cause is missing SSL.
  3. Final Answer:

    Forgetting to enable SSL (missing ssl in listen directive) -> Option A
  4. Quick Check:

    HTTP/2 needs SSL enabled in listen directive [OK]
Hint: Always include ssl with http2 in listen directive [OK]
Common Mistakes:
  • Not enabling ssl with http2
  • Placing http2 in wrong directives
  • Trying http2 on port 80 without ssl
5. You want to configure nginx to serve HTTP/2 on port 443 and redirect all HTTP (port 80) traffic to HTTPS. Which configuration snippet correctly achieves this?
hard
A.
server {
    listen 80 http2;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;
}
B.
server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    ssl_certificate /etc/ssl/cert.pem;
    ssl_certificate_key /etc/ssl/key.pem;
    server_name example.com;
}
C.
server {
    listen 443 ssl http2;
    server_name example.com;
}

server {
    listen 80 ssl http2;
    return 301 https://$host$request_uri;
}
D.
server {
    listen 443 ssl;
    ssl_certificate /etc/ssl/cert.pem;
    ssl_certificate_key /etc/ssl/key.pem;
    server_name example.com;
}

server {
    listen 80;
    return 301 https://$host$request_uri;
}

Solution

  1. Step 1: Redirect HTTP to HTTPS on port 80

    The first server block listens on port 80 without SSL and redirects all requests to HTTPS using a 301 redirect.
  2. Step 2: Enable HTTPS with HTTP/2 on port 443

    The second server block listens on port 443 with ssl and http2 enabled, and specifies SSL certificates.
  3. Step 3: Verify other options

    server {
        listen 80 http2;
        return 301 https://$host$request_uri;
    }
    
    server {
        listen 443 ssl;
        server_name example.com;
    }
    incorrectly enables http2 on port 80 (no SSL).
    server {
        listen 443 ssl http2;
        server_name example.com;
    }
    
    server {
        listen 80 ssl http2;
        return 301 https://$host$request_uri;
    }
    enables SSL and http2 on port 80 which is invalid.
    server {
        listen 443 ssl;
        ssl_certificate /etc/ssl/cert.pem;
        ssl_certificate_key /etc/ssl/key.pem;
        server_name example.com;
    }
    
    server {
        listen 80;
        return 301 https://$host$request_uri;
    }
    misses http2 on port 443.
  4. Final Answer:

    The configuration correctly redirects HTTP to HTTPS and enables HTTP/2 on HTTPS -> Option B
  5. Quick Check:

    Redirect HTTP on 80, enable SSL+http2 on 443 [OK]
Hint: Redirect HTTP on 80, enable SSL+http2 on 443 [OK]
Common Mistakes:
  • Enabling http2 on port 80 without SSL
  • Missing http2 on HTTPS server block
  • Not redirecting HTTP to HTTPS properly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard