60 Subdomain Configurations for HTTP Protocol Testing
| Type | Username | Password |
|---|---|---|
| Basic Auth | testuser | testpass |
| WebDAV | webdav | webdavpass |
key-abc-123 key-xyz-789 test-api-key
/etc/nginx/ssl/client.p12 (password: clientpass)
Sample files for testing downloads, compression, etc.
Every response includes X-Config header
# Check which config is active curl -I https://gzip.samplefiledownload.com/ X-Config: gzip-standard Content-Encoding: gzip
Different methods for serving static files - from basic HTTP to CDN-optimized delivery with security headers.
| # | Subdomain | Description | Use Case | Key Headers |
|---|---|---|---|---|
| 1 | static | HTTP Only - No HTTPS, no redirect. Plain unencrypted HTTP connection. | Testing legacy systems, internal networks, or applications that don't support HTTPS | No security headers |
| 2 | secure | HTTPS + HSTS - Enforces HTTPS with HTTP Strict Transport Security. Browser remembers to always use HTTPS. | Production websites, compliance testing, security audits | Strict-Transport-Security, X-Content-Type-Options, X-Frame-Options |
| 3 | stream | Streaming Mode - Uses sendfile() for efficient kernel-level file transfer. Buffering disabled for real-time streaming. | Video/audio streaming, large file transfers, real-time log tailing | X-Accel-Buffering: no |
| 4 | download | Force Download - Browser downloads file instead of displaying. Compression disabled to guarantee Content-Length header. | File downloads, software distribution, ensuring download progress works | Content-Disposition: attachment, Content-Length guaranteed |
| 5 | cdn | CDN-Style - Full CORS support allowing cross-origin requests. Immutable cache headers for aggressive caching. | CDN testing, cross-origin resource loading, font/asset serving | Access-Control-Allow-Origin: *, Cache-Control: immutable |
| 6 | view | Inline Viewing - Browser displays file instead of downloading. PDFs open in browser, images display directly. | Document previews, image galleries, PDF viewers | Content-Disposition: inline |
# Compare download vs view behavior curl -I https://download.samplefiledownload.com/files/sample.pdf Content-Disposition: attachment; filename="sample.pdf" curl -I https://view.samplefiledownload.com/files/sample.pdf Content-Disposition: inline # Check HSTS header curl -I https://secure.samplefiledownload.com/ Strict-Transport-Security: max-age=31536000; includeSubDomains # Test CORS headers curl -I -H "Origin: https://example.com" https://cdn.samplefiledownload.com/files/sample.js Access-Control-Allow-Origin: *
Test different HTTP protocol versions from legacy HTTP/1.0 to modern HTTP/3 (QUIC). Essential for compatibility testing and performance optimization.
| # | Subdomain | Description | Use Case | Connection Type |
|---|---|---|---|---|
| 7 | legacy | HTTP/1.0 - Original HTTP protocol. No persistent connections, each request opens new TCP connection. | Testing compatibility with very old clients, embedded systems, legacy APIs | Connection: close after each request |
| 8 | h1 | HTTP/1.1 - Persistent connections (keepalive), chunked transfer encoding, host headers required. | Standard web traffic, most common protocol, broad compatibility | TCP + TLS, keepalive enabled |
| 9 | h2 | HTTP/2 - Binary protocol with multiplexing (multiple requests over single connection), header compression, server push. | Modern web applications, improved performance for multiple assets | TCP + TLS + ALPN negotiation |
| 10 | h2c | HTTP/2 Cleartext - HTTP/2 without TLS encryption. Rarely used, most browsers don't support it. | Internal services, testing HTTP/2 without certificate setup | TCP only, no encryption |
| 11 | h3 | HTTP/3 with Fallback - Uses QUIC (UDP-based). Falls back to HTTP/2 if client doesn't support. Advertises via Alt-Svc header. | Cutting-edge performance, mobile networks, high-latency connections | QUIC (UDP) + TLS 1.3, Alt-Svc header |
| 12 | quic | QUIC Only - HTTP/3 without fallback. Connection fails if client doesn't support QUIC. | Testing QUIC-specific behavior, HTTP/3 compliance testing | QUIC (UDP) only |
| 13 | auto | Auto-Negotiate - Server and client negotiate best available protocol. Supports all versions. | General testing, let protocol be chosen automatically | Best available (HTTP/3 → HTTP/2 → HTTP/1.1) |
# Force specific HTTP versions curl -0 http://legacy.samplefiledownload.com/files/sample.txt # HTTP/1.0 curl --http1.1 https://h1.samplefiledownload.com/files/sample.txt # HTTP/1.1 curl --http2 https://h2.samplefiledownload.com/files/sample.txt # HTTP/2 curl --http3 https://h3.samplefiledownload.com/files/sample.txt # HTTP/3 # Check which protocol is used curl -sI https://h2.samplefiledownload.com/ -o /dev/null -w '%{http_version}\n' 2 # Check Alt-Svc header (HTTP/3 advertisement) curl -I https://h3.samplefiledownload.com/ | grep -i alt-svc Alt-Svc: h3=":443"; ma=86400 # HTTP/2 cleartext (prior knowledge mode) curl --http2-prior-knowledge http://h2c.samplefiledownload.com/files/sample.txt
Test Gzip and Brotli compression at different levels. Compare compression ratios, CPU usage, and impact on Content-Length header.
nocomp or precomp when you need accurate download progress.
| # | Subdomain | Description | Compression Ratio | CPU Usage | Content-Length |
|---|---|---|---|---|---|
| 14 | gzip | Gzip Level 6 - Default balanced setting. Good compression with reasonable CPU usage. | ~70-80% reduction | Medium | ❌ No (chunked) |
| 15 | gzip-max | Gzip Level 9 - Maximum compression. Best ratio but highest CPU usage. | ~75-85% reduction | High | ❌ No (chunked) |
| 16 | gzip-fast | Gzip Level 1 - Fastest compression. Lower ratio but minimal CPU overhead. | ~60-70% reduction | Low | ❌ No (chunked) |
| 17 | brotli | Brotli Level 6 - Modern compression algorithm. Better ratio than gzip at same CPU cost. | ~75-85% reduction | Medium | ❌ No (chunked) |
| 18 | brotli-max | Brotli Level 11 - Maximum Brotli compression. Best possible ratio, very slow. | ~80-90% reduction | Very High | ❌ No (chunked) |
| 19 | dual-comp | Both Enabled - Server chooses based on client Accept-Encoding. Prefers Brotli if supported. | Best available | Medium | ❌ No (chunked) |
| 20 | nocomp | No Compression - Raw file transfer. Content-Length header guaranteed for download progress. | 0% (no compression) | None | ✅ Yes |
| 20b | chunked | Forced Chunked - Forces chunked transfer encoding. Download size always unknown. | Minimal | Low | ❌ No (forced) |
| 21 | precomp | Pre-compressed - Serves .gz/.br files if they exist. Best of both: compression + Content-Length. | Maximum possible | None (pre-done) | ✅ Yes |
# Compare compression methods curl -sH "Accept-Encoding: gzip" https://gzip.samplefiledownload.com/files/sample.txt | wc -c curl -sH "Accept-Encoding: br" https://brotli.samplefiledownload.com/files/sample.txt | wc -c curl -s https://nocomp.samplefiledownload.com/files/sample.txt | wc -c # Check Content-Length vs Chunked curl -I https://nocomp.samplefiledownload.com/files/large-file.bin | grep -E "Content-Length|Transfer-Encoding" Content-Length: 10485760 curl -H "Accept-Encoding: gzip" -I https://gzip.samplefiledownload.com/files/sample.txt | grep -E "Content-Length|Transfer-Encoding" Transfer-Encoding: chunked Content-Encoding: gzip
Test different TLS versions, cipher suites, and mutual TLS (client certificates). Essential for security compliance testing.
| # | Subdomain | Description | Security Level | Compatibility |
|---|---|---|---|---|
| 22 | tls12 | TLS 1.2 Only - Widely supported, meets most compliance requirements (PCI-DSS, HIPAA). | High | Excellent (IE 11+, all modern browsers) |
| 23 | tls13 | TLS 1.3 Only - Latest version with improved security and performance. Faster handshake. | Highest | Good (Chrome 70+, Firefox 63+, Safari 12.1+) |
| 24 | tls13-0rtt | TLS 1.3 + 0-RTT - Zero Round Trip Time resumption. Faster reconnection but vulnerable to replay attacks. | High (replay risk) | Good |
| 25 | mtls | Mutual TLS (Required) - Client must present valid certificate. Returns 400 without cert. | Highest | Requires client certificate |
| 26 | mtls-optional | Mutual TLS (Optional) - Accepts client certificate if provided, works without one too. | High | Universal |
| 27 | strong-cipher | 256-bit Ciphers Only - AES-256-GCM only. Maximum encryption strength. | Highest | Good (modern clients) |
| 28 | ocsp | OCSP Stapling - Server provides certificate revocation status. Faster than client OCSP lookup. | High | Excellent |
# Test TLS version curl -v --tlsv1.2 --tls-max 1.2 https://tls12.samplefiledownload.com/ 2>&1 | grep "SSL connection" SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384 curl -v --tlsv1.3 https://tls13.samplefiledownload.com/ 2>&1 | grep "SSL connection" SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 # mTLS without certificate (fails) curl https://mtls.samplefiledownload.com/ 400 Bad Request - No required SSL certificate was sent # mTLS with certificate curl --cert /etc/nginx/ssl/client.crt --key /etc/nginx/ssl/client.key https://mtls.samplefiledownload.com/ curl --cert-type P12 --cert /etc/nginx/ssl/client.p12:clientpass https://mtls.samplefiledownload.com/
Test different HTTP caching headers and behaviors. Learn how Cache-Control directives affect browser and CDN caching.
max-age for browsers, s-maxage for CDNs.
| # | Subdomain | Description | Browser Cache | CDN Cache | Key Header |
|---|---|---|---|---|---|
| 29 | nocache | No Caching - Prevents all caching. Every request hits origin server. | ❌ None | ❌ None | no-store, no-cache, must-revalidate |
| 30 | private-cache | Private Cache - Browser can cache, CDNs/proxies cannot. For user-specific content. | ✅ 1 hour | ❌ None | private, max-age=3600 |
| 31 | public-cache | Public Cache - Both browser and CDN can cache. Different TTLs for each. | ✅ 1 day | ✅ 7 days | public, max-age=86400, s-maxage=604800 |
| 32 | swr | Stale-While-Revalidate - Serve stale content immediately while fetching fresh in background. | ✅ 1 hour + stale | ✅ Yes | stale-while-revalidate=86400 |
| 33 | immutable | Immutable - Content never changes. Cache forever, no revalidation. Use for versioned assets. | ✅ 1 year | ✅ 1 year | immutable, max-age=31536000 |
| 34 | etag | ETag Validation - Content fingerprint for conditional requests. Returns 304 if unchanged. | ✅ With validation | ✅ With validation | ETag: "abc123" |
| 35 | lastmod | Last-Modified - Timestamp-based validation. Returns 304 if not modified since. | ✅ With validation | ✅ With validation | Last-Modified: Wed, 01 Jan 2025... |
# Check cache headers curl -I https://immutable.samplefiledownload.com/files/sample.js | grep -i cache Cache-Control: public, max-age=31536000, immutable # Conditional request with ETag ETAG=$(curl -sI https://etag.samplefiledownload.com/files/sample.txt | grep -i etag | awk '{print $2}' | tr -d '\r') curl -I -H "If-None-Match: $ETAG" https://etag.samplefiledownload.com/files/sample.txt HTTP/1.1 304 Not Modified # Conditional request with Last-Modified curl -I -H "If-Modified-Since: Wed, 01 Jan 2025 00:00:00 GMT" https://lastmod.samplefiledownload.com/files/sample.txt
Test different authentication methods. From HTTP Basic Auth to API keys and IP whitelisting.
testuser / testpass | API Keys: key-abc-123, key-xyz-789, test-api-key
| # | Subdomain | Description | Auth Method | Header/Parameter |
|---|---|---|---|---|
| 36 | basic-auth | HTTP Basic Auth - Username/password sent in Authorization header (Base64 encoded). Simple but credentials visible in logs. | Username + Password | Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M= |
| 37 | jwt-auth | JWT Bearer Token - JSON Web Token in Authorization header. Stateless, contains claims. | Bearer Token | Authorization: Bearer eyJhbGc... |
| 38 | apikey-auth | API Key Header - Simple API key in custom header. Easy to implement and rotate. | API Key | X-API-Key: key-abc-123 |
| 39 | ip-auth | IP Whitelist - Allow only specific IP addresses. No credentials needed from allowed IPs. | Source IP | N/A (checked server-side) |
# Basic Auth curl -u testuser:testpass https://basic-auth.samplefiledownload.com/files/ curl -H "Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M=" https://basic-auth.samplefiledownload.com/files/ # API Key curl -H "X-API-Key: key-abc-123" https://apikey-auth.samplefiledownload.com/files/ curl -H "X-API-Key: wrong-key" https://apikey-auth.samplefiledownload.com/files/ 401 Unauthorized # Without auth (fails) curl -I https://basic-auth.samplefiledownload.com/ HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="Restricted"
Test request rate limits, connection limits, and bandwidth throttling. See how servers handle traffic spikes.
Retry-After header for wait time.
| # | Subdomain | Description | Limit | Burst | Behavior |
|---|---|---|---|---|---|
| 40 | rate-ip | Standard Rate Limit - Per-IP limiting with reasonable burst allowance. | 10 req/sec | 20 requests | 429 after burst exceeded |
| 41 | rate-strict | Strict Rate Limit - Very low limit for testing rate limit handling. | 1 req/sec | 5 requests | 429 quickly |
| 42 | rate-burst | High Burst - Allows traffic spikes but limits sustained rate. | 100 req/sec | 500 requests | Handles spikes well |
| 43 | conn-limit | Connection Limit - Limits concurrent connections per IP, not request rate. | 10 connections | N/A | 503 when exceeded |
| 44 | bw-limit | Bandwidth Limit - Full speed initially, then throttled. Good for fair usage. | 1 MB/sec | 10 MB free | Slows after 10MB |
# Hit rate limit (strict: 1 req/sec) for i in {1..10}; do curl -s -o /dev/null -w "%{http_code} " https://rate-strict.samplefiledownload.com/; done 200 200 200 200 200 429 429 429 429 429 # Test bandwidth limit (download large file) curl -o /dev/null -w "Speed: %{speed_download} bytes/sec\n" https://bw-limit.samplefiledownload.com/files/large-file.bin # Test connection limit (parallel requests) for i in {1..15}; do curl -s https://conn-limit.samplefiledownload.com/files/sample.txt & done; wait
Test keepalive settings, timeouts, and buffer configurations. Affects connection reuse and memory usage.
| # | Subdomain | Description | Timeout | Max Requests | Use Case |
|---|---|---|---|---|---|
| 45 | keepalive-long | Long Keepalive - Connection stays open for 5 minutes. Good for frequent requests. | 300 sec | 1000 | APIs, SPAs, frequent polling |
| 46 | keepalive-short | Short Keepalive - Quick connection turnover. Frees resources faster. | 5 sec | 10 | High-traffic, many clients |
| 47 | no-keepalive | No Keepalive - Connection closes after each request. Like HTTP/1.0. | 0 | 1 | Testing, legacy compatibility |
| 48 | timeout-long | Long Timeouts - Patient server, waits 5 minutes for slow clients/uploads. | 300 sec all | Default | Large uploads, slow networks |
| 49 | timeout-short | Short Timeouts - Fail fast. Drops slow connections quickly. | 5 sec all | Default | DDoS mitigation, fast failure |
| 50 | buffer-large | Large Buffers - 10MB request body buffer. For large file uploads. | Default | Default | File uploads, large POST bodies |
| 51 | buffer-small | Small Buffers - Minimal memory usage. May be slower for large requests. | Default | Default | Memory-constrained servers |
# Check keepalive behavior curl -v https://keepalive-long.samplefiledownload.com/ https://keepalive-long.samplefiledownload.com/ 2>&1 | grep -E "Re-using|Connected" * Connected to keepalive-long.samplefiledownload.com * Re-using existing connection # No keepalive (new connection each time) curl -I https://no-keepalive.samplefiledownload.com/ | grep -i connection Connection: close # Test timeout (will fail on timeout-short) curl --limit-rate 100 https://timeout-short.samplefiledownload.com/files/large-file.bin
Advanced features: secure download links, A/B testing, health checks, device detection, WebDAV, and more.
| # | Subdomain | Description | Feature | Use Case |
|---|---|---|---|---|
| 52 | secure-link | Secure Links - Time-limited URLs with MD5 signature. Link expires after set time. | URL signing + expiration | Paid downloads, temporary access, preventing hotlinking |
| 53 | canary | A/B Testing - 10% traffic to canary, 90% to stable. X-Backend header shows which served. | Traffic splitting | Canary deployments, feature flags, gradual rollouts |
| 54 | mirror | Traffic Mirroring - Copies requests to secondary server without affecting response. | Request duplication | Testing new backends, shadow traffic, debugging |
| 55 | reqid | Request ID - Unique ID for each request. Essential for distributed tracing. | X-Request-ID header |
Logging, debugging, tracing across microservices |
| 56 | health | Health Checks - Endpoints for load balancers and monitoring. Returns server status. | /health, /health/json |
Kubernetes probes, load balancer health checks |
| 57 | device | Device Detection - Detects mobile/tablet/desktop from User-Agent header. | X-Device-Type header |
Responsive redirects, device-specific content |
| 58 | autoindex | Directory Listing - Beautiful file browser powered by DirectoryLister PHP app. | File browser UI | File sharing, download portals, media libraries |
| 59 | ssi | Server-Side Includes - Embed dynamic content in static HTML files. | SSI processing | Simple templating, include headers/footers |
| 60 | webdav | WebDAV Server - Full WebDAV support: upload, delete, move, copy files via HTTP. | PROPFIND, MKCOL, PUT, DELETE | Remote file management, network drives, backup sync |
# Generate secure link (bash) SECRET="mysecret"; EXPIRES=$(($(date +%s) + 3600)); URI="/files/sample.txt" MD5=$(echo -n "${EXPIRES}${URI} ${SECRET}" | openssl md5 -binary | base64 | tr +/ -_ | tr -d =) curl "https://secure-link.samplefiledownload.com${URI}?md5=${MD5}&expires=${EXPIRES}" # Check A/B backend for i in {1..10}; do curl -sI https://canary.samplefiledownload.com/ | grep X-Backend; done X-Backend: stable X-Backend: stable X-Backend: canary # Request ID tracking curl -I https://reqid.samplefiledownload.com/ | grep -i x-request-id X-Request-ID: 5f4dcc3b5aa765d61d8327deb882cf99 # Health checks curl https://health.samplefiledownload.com/health OK curl https://health.samplefiledownload.com/health/json {"status":"healthy","timestamp":"2025-01-01T00:00:00Z"} # Device detection curl -A "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0)" -I https://device.samplefiledownload.com/ | grep device X-Device-Type: mobile # WebDAV operations curl -X MKCOL -u webdav:webdavpass https://webdav.samplefiledownload.com/newfolder/ curl -T myfile.txt -u webdav:webdavpass https://webdav.samplefiledownload.com/newfolder/myfile.txt curl -X PROPFIND -u webdav:webdavpass https://webdav.samplefiledownload.com/ curl -X DELETE -u webdav:webdavpass https://webdav.samplefiledownload.com/newfolder/myfile.txt
When downloading files, the server may or may not send the file size. This affects whether download managers can show progress percentage.
Content-Length header = Download manager shows "45% of 10MB"Transfer-Encoding: chunked = Download manager shows "Downloading..." (unknown size)| # | Subdomain | Content-Length | Progress Bar | Reason |
|---|---|---|---|---|
| 1 | static | ✅ Yes | ✅ Works | No compression |
| 2 | secure | ✅ Yes | ✅ Works | No compression |
| 3 | stream | ✅ Yes | ✅ Works | Sendfile, no compression |
| 4 | download | ✅ Yes | ✅ Works | Compression disabled |
| 5 | cdn | ✅ Yes | ✅ Works | No compression |
| 6 | view | ✅ Yes | ✅ Works | No compression |
| 7 | legacy | ✅ Yes | ✅ Works | HTTP/1.0, no compression |
| 8 | h1 | ✅ Yes | ✅ Works | No compression |
| 9 | h2 | ✅ Yes | ✅ Works | No compression |
| 10 | h2c | ✅ Yes | ✅ Works | No compression |
| 11 | h3 | ✅ Yes | ✅ Works | No compression |
| 12 | quic | ✅ Yes | ✅ Works | No compression |
| 13 | auto | ✅ Yes | ✅ Works | No compression |
| 14 | gzip | ❌ No | ❌ Unknown | On-the-fly gzip compression |
| 15 | gzip-max | ❌ No | ❌ Unknown | On-the-fly gzip level 9 |
| 16 | gzip-fast | ❌ No | ❌ Unknown | On-the-fly gzip level 1 |
| 17 | brotli | ❌ No | ❌ Unknown | On-the-fly brotli compression |
| 18 | brotli-max | ❌ No | ❌ Unknown | On-the-fly brotli level 11 |
| 19 | dual-comp | ❌ No | ❌ Unknown | On-the-fly compression |
| 20 | nocomp | ✅ Yes | ✅ Works | Compression explicitly disabled |
| 20b | chunked | ❌ No | ❌ Unknown | Forces chunked transfer |
| 21 | precomp | ✅ Yes | ✅ Works | Pre-compressed .gz/.br files |
| 22 | tls12 | ✅ Yes | ✅ Works | No compression |
| 23 | tls13 | ✅ Yes | ✅ Works | No compression |
| 24 | tls13-0rtt | ✅ Yes | ✅ Works | No compression |
| 25 | mtls | ✅ Yes | ✅ Works | No compression |
| 26 | mtls-optional | ✅ Yes | ✅ Works | No compression |
| 27 | strong-cipher | ✅ Yes | ✅ Works | No compression |
| 28 | ocsp | ✅ Yes | ✅ Works | No compression |
| 29 | nocache | ✅ Yes | ✅ Works | No compression |
| 30 | private-cache | ✅ Yes | ✅ Works | No compression |
| 31 | public-cache | ✅ Yes | ✅ Works | No compression |
| 32 | swr | ✅ Yes | ✅ Works | No compression |
| 33 | immutable | ✅ Yes | ✅ Works | No compression |
| 34 | etag | ✅ Yes | ✅ Works | No compression |
| 35 | lastmod | ✅ Yes | ✅ Works | No compression |
| 36 | basic-auth | ✅ Yes | ✅ Works | No compression |
| 37 | jwt-auth | ✅ Yes | ✅ Works | No compression |
| 38 | apikey-auth | ✅ Yes | ✅ Works | No compression |
| 39 | ip-auth | ✅ Yes | ✅ Works | No compression |
| 40 | rate-ip | ✅ Yes | ✅ Works | No compression |
| 41 | rate-strict | ✅ Yes | ✅ Works | No compression |
| 42 | rate-burst | ✅ Yes | ✅ Works | No compression |
| 43 | conn-limit | ✅ Yes | ✅ Works | No compression |
| 44 | bw-limit | ✅ Yes | ✅ Works | No compression |
| 45 | keepalive-long | ✅ Yes | ✅ Works | No compression |
| 46 | keepalive-short | ✅ Yes | ✅ Works | No compression |
| 47 | no-keepalive | ✅ Yes | ✅ Works | No compression |
| 48 | timeout-long | ✅ Yes | ✅ Works | No compression |
| 49 | timeout-short | ✅ Yes | ✅ Works | No compression |
| 50 | buffer-large | ✅ Yes | ✅ Works | No compression |
| 51 | buffer-small | ✅ Yes | ✅ Works | No compression |
| 52 | secure-link | ✅ Yes | ✅ Works | No compression |
| 53 | canary | ✅ Yes | ✅ Works | No compression |
| 54 | mirror | ✅ Yes | ✅ Works | No compression |
| 55 | reqid | ✅ Yes | ✅ Works | No compression |
| 56 | health | ✅ Yes | ✅ Works | No compression |
| 57 | device | ✅ Yes | ✅ Works | No compression |
| 58 | autoindex | ✅ Yes | ✅ Works | No compression |
| 59 | ssi | ✅ Yes | ✅ Works | No compression |
| 60 | webdav | ✅ Yes | ✅ Works | No compression |
# Shows Content-Length (progress bar works) curl -I https://download.samplefiledownload.com/files/large-file.bin 2>/dev/null | grep -E "Content-Length|Transfer-Encoding" Content-Length: 10485760 # No Content-Length (unknown size, chunked transfer) curl -H "Accept-Encoding: gzip" -I https://gzip.samplefiledownload.com/files/sample.txt 2>/dev/null | grep -E "Content-Length|Transfer-Encoding" Transfer-Encoding: chunked # Force unknown size curl -I https://chunked.samplefiledownload.com/files/large-file.bin 2>/dev/null | grep -E "Content-Length|Transfer-Encoding" Transfer-Encoding: chunked # Compare download progress behavior curl -# -o /dev/null https://download.samplefiledownload.com/files/large-file.bin ######################################## 100.0% curl -# -o /dev/null https://chunked.samplefiledownload.com/files/large-file.bin ### (no percentage shown)
| Category | Count | Content-Length |
|---|---|---|
| Size Known (progress bar works) | 54 | ✅ Sent |
| Size Unknown (chunked transfer) | 7 | ❌ Not sent |
download or nocomp subdomains to ensure download managers can show accurate progress percentage.
All 60 subdomains with their purpose and key features
| # | Subdomain | Purpose | Key Header/Feature |
|---|---|---|---|
| 1 | static | HTTP only static serving | No HTTPS redirect |
| 2 | secure | HTTPS with HSTS | Strict-Transport-Security |
| 3 | stream | Streaming with sendfile | X-Accel-Buffering: no |
| 4 | download | Force download + Content-Length | No compression, progress bar works |
| 5 | cdn | CDN-style with CORS | Access-Control-Allow-Origin: * |
| 6 | view | Inline viewing | Content-Disposition: inline |
| 7 | legacy | HTTP/1.0 only | Connection: close |
| 8 | h1 | HTTP/1.1 only | keepalive enabled |
| 9 | h2 | HTTP/2 | ALPN h2 |
| 10 | h2c | HTTP/2 cleartext | No TLS, HTTP/2 upgrade |
| 11 | h3 | HTTP/3 with fallback | Alt-Svc: h3 |
| 12 | quic | QUIC only | HTTP/3 required |
| 13 | auto | Auto-negotiate | All protocols enabled |
| 14 | gzip | Gzip level 6 | Content-Encoding: gzip |
| 15 | gzip-max | Gzip level 9 | Maximum compression |
| 16 | gzip-fast | Gzip level 1 | Fastest compression |
| 17 | brotli | Brotli level 6 | Content-Encoding: br |
| 18 | brotli-max | Brotli level 11 | Maximum compression |
| 19 | dual-comp | Both Gzip and Brotli | Client preference |
| 20 | nocomp | No compression + Content-Length | Progress bar works, raw transfer |
| 20b | chunked | Chunked transfer (no size) | Transfer-Encoding: chunked |
| 21 | precomp | Pre-compressed files | gzip_static, brotli_static |
| 22 | tls12 | TLS 1.2 only | ssl_protocols TLSv1.2 |
| 23 | tls13 | TLS 1.3 only | ssl_protocols TLSv1.3 |
| 24 | tls13-0rtt | TLS 1.3 with 0-RTT | ssl_early_data on |
| 25 | mtls | Mutual TLS required | ssl_verify_client on |
| 26 | mtls-optional | Mutual TLS optional | ssl_verify_client optional |
| 27 | strong-cipher | 256-bit ciphers only | AES-256-GCM only |
| 28 | ocsp | OCSP stapling | ssl_stapling on |
| 29 | nocache | No caching | Cache-Control: no-store |
| 30 | private-cache | Browser cache only | Cache-Control: private |
| 31 | public-cache | CDN cacheable | Cache-Control: public |
| 32 | swr | Stale-while-revalidate | stale-while-revalidate=3600 |
| 33 | immutable | Immutable assets | immutable, max-age=31536000 |
| 34 | etag | ETag validation | ETag header |
| 35 | lastmod | Last-Modified | Last-Modified header |
| 36 | basic-auth | HTTP Basic Auth | WWW-Authenticate: Basic |
| 37 | jwt-auth | JWT authentication | Authorization: Bearer |
| 38 | apikey-auth | API Key header | X-API-Key validation |
| 39 | ip-auth | IP whitelist | allow/deny directives |
| 40 | rate-ip | Per-IP rate limit | 10 req/s, burst 20 |
| 41 | rate-strict | Strict rate limit | 1 req/s, burst 5 |
| 42 | rate-burst | High burst allowed | 100 req/s, burst 500 |
| 43 | conn-limit | Connection limit | 10 connections/IP |
| 44 | bw-limit | Bandwidth limit | 1MB/s after 10MB |
| 45 | keepalive-long | Long keepalive | timeout=300, max=1000 |
| 46 | keepalive-short | Short keepalive | timeout=5, max=10 |
| 47 | no-keepalive | No keepalive | Connection: close |
| 48 | timeout-long | Long timeouts | 300s timeouts |
| 49 | timeout-short | Short timeouts | 5s timeouts |
| 50 | buffer-large | Large buffers | 10MB buffers |
| 51 | buffer-small | Small buffers | 1KB buffers |
| 52 | secure-link | Secure links | MD5 hash + expiration |
| 53 | canary | A/B testing | 10% canary, 90% stable |
| 54 | mirror | Traffic mirroring | mirror directive |
| 55 | reqid | Request ID | X-Request-ID header |
| 56 | health | Health checks | /health, /health/json |
| 57 | device | Device detection | X-Device-Type header |
| 58 | autoindex | Directory listing | DirectoryLister UI |
| 59 | ssi | Server-side includes | ssi on |
| 60 | webdav | WebDAV server | PROPFIND, MKCOL, etc. |