**What processes does NGINX have?** NGINX has *one master process and several worker processes.* > **What is the purpose of NGINX's master process?** > The purpose of NGINX's master process is to *read and evaluate configuration*, and *maintain worker processes.* > > **What is the purpose of NGINX's worker processes?** > The purpose of NGINX's worker processes is *to actually process requests.* > > > **What techniques does NGINX employ to distribute requests among the worker processes?** > > To distribute requests among the worker processes, NGINX employs *event-based model and OS-dependent mechanisms.* > > > > **What's the number of worker processes NGINX starts?** > > The number of worker processes NGINX starts *can either be defined in the configuration file or automatically adjusted to the number of CPU cores.* **What is the name of NGINX's configuration file?** The name of NGINX's configuration file is *`nginx.conf`.* > **What are the three directories NGINX's configuration file, `nginx.conf`, can be placed by default?** > The three directories NGINX's configuration file, `nginx.conf`, can be placed by default are: > 1. `/usr/local/nginx/conf`. > 2. `/etc/nginx`. > 3. `/usr/local/etc/nginx`. **How do you send a signal to NGINX's master process with the `nginx` executable?** To send a signal to NGINX's master process with the `nginx` executable, run: ```bash nginx -s signal ``` > **What signals are available to send to NGINX with the `nginx` executable?** > The signals available to send to NGINX with the `nginx` executable are: > * `stop` - Fast shutdown. > * `quit` - Graceful shutdown. > * `reload` - Reload the configuration. > * `reopen` - Reopen the log files. > > **What does NGINX do when it receives a signal to reload the configuration?** > Once NGINX receives a signal to reload the configuration, *it checks the syntax validity of the new configuration and tries to apply it.* > > **What does NGINX's master process do when the reloaded configuration is valid?** > If the reloaded configuration is valid, NGINX's master process *starts new worker processes and sends messages to old worker processes to shutdown.* > > **What does NGINX's master process do when the reloaded configuration is invalid?** > If the reloaded configuration is invalid, NGINX's master process *rolls back the changes and continues with the old configuration.* **How do you send a signal to NGINX's master process with the `kill` utility?** To send a signal to NGINX's master process with the `kill` utility, run: ```bash kill -s SIGNAL PID ``` > **Where can you find the PID of NGINX's master process in the file system?** > You can find the PID of NGINX's master process in the file system *by reading the `nginx.pid` file, which is either in the `/usr/local/nginx/logs` or `/var/run` directories.* > > **How can you find the PID of NGINX's master process with the `ps` utility?** > To find the PID of NGINX's master process with the `ps` utility, run: > ```bash > ps -ax | grep nginx > ``` **What does NGINX consist of?** NGINX consists of *modules controlled by directives specified in the configuration file.* > **What are the two types of directives in NGINX's configuration file?** > The two types of directives in NGINX's configuration file are: > 1. Simple directives. > 2. Block directives. > > > **In NGINX's configuration file, what does a simple directive consist of?** > > In NGINX's configuration file, a simple directive consists of *a name and parameters separated by spaces, and ends with a semicolon.* > > > > **In NGINX's configuration file, what does a block directive consist of?** > > In NGINX's configuration file, a block directive consists of *the same structure as a simple directive but it ends with a set of additional instructions surrounded by braces instead of a semicolon.* > > > **In NGINX's configuration file, what is a block directive that can have other directives inside braces called?** > > > In NGINX's configuration file, a block directive that can have other directives inside braces is called *a context.* > > > > **In NGINX's configuration file, what context are directives in if they're placed outside any context?** > > > > If directives are placed outside any context in NGINX's configuration file, they're in *the `main` context.* > > > > > > > > **In NGINX's configuration file, what context do the `events` and `http` directives reside?** > > > > In NGINX's configuration file, the `events` and `http` directives reside in *the `main` context.* > > > > > > > > **In NGINX's configuration file, what context do the `server` directives reside?** > > > > In NGINX's configuration file, the `server` directives reside in *the `http` context.* > > > > > > > > **In NGINX's configuration file, what context do the `location` directives reside?** > > > > In NGINX's configuration file, the `location` directives reside in *the `server` context.* **How are `server` contexts distinguished?** Server contexts are distinguished by what *ports they're listening on and server names.* **What does NGINX do once it decides which `server` context processes a request?** Once NGINX decides which `server` context processes a request, *it tests the URI from the request's header against the parameters of the `location` directives in the `server` context.* > **What does NGINX do if multiple `location` directives match the URI?** > If multiple `location` directives match the URI, *NGINX prefers the one with the longest prefix.* > > **What does NGINX do if a `location` directive with a regular expression matches the URI?** > If a `location` directive with a regular expression matches the URI, *NGINX prefers it over the `location` directive with the longest matching prefix.* **What two log files can you check if NGINX's configuration doesn't work as expected?** If NGINX's configuration doesn't work as expected, two log files you can check are: 1. `access.log`. 2. `error.log`. > **What are the two locations that NGINX logs could be stored at?** > The two locations that NGINX logs could be stored at are: > 1. `/usr/local/nginx/logs`. > 2. `/var/log/nginx`. **What is a proxy server?** A proxy server is *a server that receives requests, passes them to the proxied servers, retrieves the responses from them, and sends them to the clients.* > **What NGINX directive and parameters are used to pass a request to another server?** > *The NGINX `proxy_pass` directive, along with the protocol, name, and port of the proxied server*, are used to pass a request to another server. **What should regular expressions in `location` directives be preceded by?** Regular expressions in `location` directives should be preceded by *`~`.* > **How do you write a regular expression which matches URIs ending with particular file extensions?** > To write a regular expression which matches URIs ending with particular file extensions, write: > ```nginx > location ~ \.(extension1|extension2)$ { > ... > } > ``` **What directive and parameters are used to pass a request to a FastCGI server?** The `fastcgi_pass` directive, along with the name and port of the FastCGI server, are used to pass a request to another server. > **What directives are used to set parameters that are passed to the FastCGI server?** > The directives used to set parameters that are passed to the FastCGI server are *`fastcgi_param` directives.*