Prev Next

Web / NGINX Interview questions

Explain the lifecycle of an HTTP request in NGINX?

Every request NGINX handles moves through a defined sequence of processing stages, regardless of whether it ends up being served locally or proxied elsewhere.

First, NGINX accepts the TCP connection and, if TLS is involved, completes the SSL handshake. It then reads and parses the HTTP request line and headers. Using the Host header and listening port, it selects the matching server block, then within that block selects the most specific matching location block for the request URI.

From there, the request runs through NGINX's internal processing phases - rewrite rules are applied, access controls are checked, and then content is generated: either read from disk for static files, or forwarded upstream via proxy_pass for dynamic content. The response is filtered (compression, header addition) before being written back to the client, and the connection is either closed or kept alive for the next request.

flowchart TD
  A[Accept connection / TLS handshake] --> B[Parse request line and headers]
  B --> C[Match server block by Host + port]
  C --> D[Match location block by URI]
  D --> E[Rewrite phase]
  E --> F[Access control phase]
  F --> G{Static or proxied?}
  G -- Static --> H[Read file from disk]
  G -- Proxied --> I[proxy_pass to upstream]
  H --> J[Response filters: compression, headers]
  I --> J
  J --> K[Write response to client]
What determines which server block handles an incoming request?
After content is generated, what happens before the response reaches the client?

More Related questions...

What is NGINX? What is the purpose of NGINX as a reverse proxy? What are the main features of NGINX? What are the types of context blocks in NGINX configuration? Define upstream in NGINX? What is the master-worker process model in NGINX? List common NGINX configuration directives? How do you install NGINX on Ubuntu? How do you start, stop, and reload NGINX? What is the nginx.conf file? What are server blocks in NGINX? What is a location block in NGINX? How do you serve static files with NGINX? What is load balancing in NGINX? What are the types of load balancing methods in NGINX? Define a virtual host in NGINX? What is SSL termination in NGINX? How do you enable Gzip compression in NGINX? What is caching in NGINX? What is the purpose of the events block in NGINX? What is the difference between NGINX and Apache HTTP Server? What is the difference between proxy_pass and rewrite in NGINX? What is the difference between a forward proxy and a reverse proxy? How does NGINX handle concurrent client connections? How does NGINX's event-driven architecture work? Why is NGINX considered more performant than process-per-connection servers? Why do we use upstream blocks with multiple servers? When should you use NGINX purely as a reverse proxy versus also as a load balancer? When would you choose round robin over least_conn load balancing? What happens when an upstream server fails a health check? How is SSL/TLS termination configured in NGINX? How can you optimize NGINX for high-traffic websites? How do you troubleshoot a 502 Bad Gateway error in NGINX? How do you troubleshoot high memory usage in NGINX worker processes? Explain the lifecycle of an HTTP request in NGINX? Explain the execution flow of NGINX's request processing phases? Explain the internal working of NGINX worker processes and the event loop? Why doesn't NGINX use a thread-per-request model like Apache's prefork MPM? Why should location block matching order matter between regex and prefix matches? What is the difference between try_files and rewrite directives? How does NGINX handle SSL session caching for performance? How can you optimize NGINX buffer settings for large file uploads? What is the difference between active and passive health checks in NGINX? How do you troubleshoot NGINX configuration errors before reloading? Why is the worker_connections directive important for concurrency limits? When should you use NGINX caching instead of a dedicated CDN? What is the difference between limit_req and limit_conn for rate limiting? How does NGINX handle WebSocket proxying? Explain the internal working of NGINX's keepalive connection pooling to upstream servers? Why do we use try_files with a fallback to PHP-FPM in WordPress-style setups?
Show more question and Answers...


Comments & Discussions