Nginx Web服务器配置块有:1、设置虚拟服务器;2、配置位置;3、使用变量;4、返回特定状态码;5、重写请求中的URI;6、重写HTTP响应;7、处理错误。
Nginx Web服务器配置块有:
1. 设置虚拟服务器
NGINX配置文件必须至少包含一个服务器指令来定义虚拟服务器。 当NGINX处理请求时,它首先选择提供请求的虚拟服务器。
虚拟服务器由http上下文中的服务器指令定义,例如:
http { server { # Server configuration } }
可以将多个server指令添加到http上下文中以定义多个虚拟服务器。
推荐教程:nginx快速入门教程
server
配置块通常包括一个listen指令,用于指定服务器侦听请求的IP地址和端口(或Unix域套接字和路径)。IPv4和IPv6地址均被接受; 将方括号(。
下面的示例显示了监听IP地址127.0.0.1和端口8080的服务器的配置:
server { listen 127.0.0.1:8080; # The rest of server configuration }
如果省略端口,则使用标准端口。 同样地,如果省略一个地址,服务器将侦听所有地址。 如果没有包含listen指令,则“标准”端口为80/tcp
,“default”端口为8000/tcp
,具体取决于超级用户权限。
如果有多个服务器与请求的IP地址和端口相匹配,则NGINX将根据服务器块中的server_name指令测试请求的主机头域。 server_name的参数可以是完整(精确)名称,通配符或正则表达式。
通配符是一个字符串,其开头,结尾或两者都包含星号(*); 星号匹配任何字符序列。 NGINX将Perl语法用于正则表达式; 在它们之前使用波浪号(〜)。 此示例说明了一个确切的名称。
server { listen 80; server_name example.org www.example.org; ... }
如果匹配主机头几个名称,则NGINX通过按以下顺序搜索名称并使用其找到的第一个匹配来选择一个:
-
确切的名字(完整准确的名称)
-
以星号开头的最长通配符,例如:*.example.org
-
以星号结尾的最长通配符,如:mail.*
-
第一个匹配正则表达式(按照出现在配置文件中的顺序)
如果主机头字段与服务器名称不匹配,则NGINX会将请求路由到请求到达端口的默认服务器。 默认服务器是nginx.conf文件中列出的第一个服务器,除非您将listen_server参数包含在listen指令中以明确指定服务器为默认值。
server { listen 80 default_server; ... }
一个完整的Nginx虚拟机配置示例,这里我们演示配置两个虚拟机,对应域名分别为:vhost1.com 和 vhost2.com,vhost1.com网站的主目录在/data/www/vhost1
,vhost2.com网站的主目录在/data/www/vhost2
:
server { listen 80; server_name vhost1.com www.vhost1.com; index index.html index.html; root /data/www/vhost1; access_log /var/log/vhost1.com.log; } server { listen 80; server_name vhost2.com www.vhost2.com; index index.html index.html; root /data/www/vhost2; access_log /var/log/vhost2.com.log; }
2. 配置位置
NGINX可以根据请求URI向不同的代理发送流量或提供不同的文件。 这些块是使用放置在server指令中的location指令来定义的。
例如,您可以定义三个location块,以指示虚拟服务器向一个代理服务器发送一些请求,将其他请求发送到不同的代理服务器,并通过从本地文件系统传递文件来提供其余请求。
NGINX测试根据所有location指令的参数请求URI,并应用匹配location中定义的指令。 在每个location块内,通常可能(除了一些例外)放置