官方文档:https://docs.nginx.com/
NGINX与其他服务类似,因为它们使用以特定格式编写的基于文本的配置文件。默认情况下,该文件名为nginx.conf。(对于NGINX开源,位置取决于用于安装NGINX的软件包系统和操作系统。它通常是 /usr/local/nginx/conf、/etc/nginx 或 /usr/local/etc/nginx 之一。)
指令
配置文件由指令及其参数组成。简单(单行)指令以分号结尾。其他指令充当“容器”,将相关指令组合在一起,将它们括在大括号中( );这些通常被称为块。以下是一些简单指令的示例。{}
- user nobody;
- error_log logs/error.log notice;
- worker_processes 1;
特定于功能的配置文件
为了使配置更易于维护,我们建议您将其拆分为一组存储在 /etc/nginx/conf.d 目录中的特定于功能的文件,并使用 nginx.conf 主文件中的 include 指令来引用特定于功能的文件的内容。
- include conf.d/http;
- include conf.d/stream;
- include conf.d/exchange-enhanced;
上下文
一些顶级指令(称为上下文)将适用于不同流量类型的指令组合在一起:
- events – General connection processing
- http – HTTP traffic
- mail – Mail traffic
- stream – TCP and UDP traffic
放置在这些上下文之外的指令据说是在主上下文中。
虚拟服务器
在每个流量处理上下文中,都包含一个或多个块来定义控制请求处理的虚拟服务器。可以在上下文中包含的指令因流量类型而异。serverserver
对于 HTTP 流量(上下文),每个服务器指令控制对特定域或 IP 地址处的资源请求的处理。上下文中的一个或多个位置上下文定义如何处理特定的 URI 集。httpserver
对于邮件和 TCP/UDP 流量(邮件和流上下文),每个指令都控制到达特定 TCP 端口或 UNIX 套接字的流量的处理。server
具有多个上下文的示例配置文件
以下配置说明了上下文的用法。
- user nobody; # a directive in the 'main' context
-
- events {
- # configuration of connection processing
- }
-
- http {
- # Configuration specific to HTTP and affecting all virtual servers
-
- server {
- # configuration of HTTP virtual server 1
- location /one {
- # configuration for processing URIs starting with '/one'
- }
- location /two {
- # configuration for processing URIs starting with '/two'
- }
- }
-
- server {
- # configuration of HTTP virtual server 2
- }
- }
-
- stream {
- # Configuration specific to TCP/UDP and affecting all virtual servers
- server {
- # configuration of TCP virtual server 1
- }
- }
继承
通常,子上下文(包含在另一个上下文(其父上下文)中的子上下文)继承父级别包含的指令的设置。某些指令可以出现在多个上下文中,在这种情况下,您可以通过在子上下文中包含指令来覆盖从父级继承的设置。有关示例,请参阅 proxy_set_header 指令。
重新加载配置
要使对配置文件的更改生效,必须重新加载它。您可以重新启动进程,也可以发送信号以升级配置,而不会中断当前请求的处理。有关详细信息,请参阅在运行时控制 NGINX 进程。nginxreload