Nginx — pronounced "engine x" — is a high-performance open-source HTTP server, reverse proxy, and IMAP/POP3 mail proxy originally written by Igor Sysoev and first released in 2004. It is built around a single master process that reads and validates the configuration, manages listening sockets, and spawns a configurable number of worker processes. By default the master creates one worker per CPU core, and every worker handles incoming connections using an event-driven, non-blocking loop. This architecture is what makes nginx able to serve tens of thousands of concurrent connections with very little memory compared to traditional process-per-request servers like Apache.
Because workers are long-lived, you can change the configuration or even upgrade the binary without dropping user connections. To do so, send SIGHUP to the master process (or run nginx -s reload): the master re-reads the configuration, starts new workers running the new settings, and gracefully drains the old workers once their existing requests finish. Two other shutdown signals are worth distinguishing. nginx -s stop sends SIGTERM and forces workers to exit immediately, closing any open connections. nginx -s quit sends SIGQUIT, which lets workers finish serving their current requests before exiting cleanly. Choosing between them is mostly about whether you can tolerate dropped sessions.
Before applying any change in production you can validate the syntax safely with nginx -t. This command parses the configuration files, includes, and referenced certificates without starting or reloading the server. The companion flag nginx -T goes one step further and dumps the fully expanded configuration to stdout, which is invaluable in CI/CD pipelines and when debugging complex include chains. On Linux the main configuration file lives at /etc/nginx/nginx.conf, with additional files typically loaded via include /etc/nginx/conf.d/*.conf; and per-site configs under /etc/nginx/sites-enabled/. Treat the configuration as a small, declarative program: write it, test it, then reload it.