listen
listen address:port [可选参数]
默认:listen 80;
配置块:server
注意:不加端口时默认监听 80
eg.
listen localhost:8000; listen *:8000;
可选参数:
default
将所在的 server 块作为整个 Web 服务默认的 server 块,若没有设置 default 会将 nginx.conf 中的第一个 server 块设为默认。
当请求无法匹配到所有主机域名时,就会选择默认虚拟主机
default _server
同 default
backlog = num
默认: -1
TCP 中 backlog 的大小,当阻塞时,设置挂起连接队列的最大长度,列满后建立新连接会失败
rcvbuf = size
默认:8k
socket 接收缓冲的大小,在接收数据比较大的场景中可以适当调整
sndbuf = size
默认:8k
socket 发送缓冲的大小,在发送数据比较大的场景中可以适当调整
accept_filter
为监听套接字设置过滤器,仅支持 FreeBSD 和 NetBSD 5.0+ 系统
deferred
设置后只有用户在真正发送请求数据时才会唤醒 worker 进程处理这个连接,适用于大并发的情况下。
bind
address:port
当 listen
指令指定了 bind
参数时,它将绑定到指定的 IP 地址上。这意味着 nginx 服务器将只监听指定 IP 地址上的特定端口,并且只接受该 IP 地址上的传入连接,只有同时对一个端口监听多个地址时才会生效
ssl
当前监听端口的连接必须基于 SSL 协议
server_name
server_name name [...]
默认:server_name "";
配置块:server
server_name
后可跟多个主机名称
Nginx 在处理请求时会按照配置文件中的顺序进行匹配
-
单个域名: 可以直接指定一个单独的域名,例如:
server_name example.com;
这表示该虚拟主机配置将用于处理所有针对
example.com
的请求。 -
多个域名: 可以在同一
server
块中指定多个域名,使用空格分隔,例如:server_name example.com www.example.com;
这表示该虚拟主机配置将用于处理所有针对
example.com
和www.example.com
的请求。 -
通配符: 可以使用通配符来匹配多个域名,常见的通配符包括
*
和~
。*
用于模糊匹配,~
用于正则表达式匹配。例如:server_name *.example.com;
这表示该虚拟主机配置将用于处理所有以
example.com
作为后缀的子域名的请求。 -
正则表达式: 可以使用正则表达式来进行更灵活的匹配,使用
~
开头,例如:server_name ~^(www\.)?example\.com$;
这表示该虚拟主机配置将用于处理所有以
example.com
开头(可选的www.
)的请求,其中^
表示字符串的开始,$
表示字符串的结束。 -
默认服务器: 可以将
server_name
设置为_
,表示默认服务器,用于处理无法匹配到其他虚拟主机的请求,例如:server_name _;
这表示该虚拟主机配置将用于处理所有未被其他虚拟主机匹配到的请求。
location
location [=|~|~*|^~|@]/uri/{...}
配置块:server
location 它可以用于匹配 URL 中的路径,并指定该路径下的配置规则
-
精确匹配路径:
location /path { # 针对 /path 的配置规则 }
这表示当请求的路径为
/path
时,将应用location
中指定的配置规则。 -
前缀匹配路径:
location ^~ /prefix { # 针对以 /prefix 开头的路径的配置规则 }
使用
^~
表示前缀匹配,这样会优先匹配该规则。例如,当请求的路径为/prefix/example
时,将应用location
中指定的配置规则。 -
正则表达式匹配路径:
location ~* \.(jpg|jpeg|png)$ { # 针对以 .jpg、.jpeg 或 .png 结尾的路径的配置规则 }
使用
~*
表示正则表达式匹配,这里的正则表达式\.(jpg|jpeg|png)$
匹配以这些文件扩展名结尾的路径。 -
正则表达式匹配路径(区分大小写):
location ~ \.(gif|css)$ { # 针对以 .gif 或 .css 结尾的路径的配置规则(区分大小写) }
使用
~
表示正则表达式匹配,但是区分大小写。 -
Exact Match:
location = /exact_path { # 针对精确匹配 /exact_path 的路径的配置规则 }
使用
=
表示精确匹配,只有当请求路径完全等于/exact_path
时才应用该规则。 -
通用匹配:
location / { # 针对所有路径的配置规则 }
如果没有其他
location
规则匹配,这个通用location
会匹配任何路径。 -
反向代理:
location /app/ { proxy_pass http://backend_server; # 反向代理配置 }
这个例子配置了一个反向代理,将以
/app/
开头的请求转发到backend_server
。