当前位置:首页 > nginx > 正文

nginx的正确使用

  • nginx
  • 2024-05-03 07:02:06
  • 2111

1、跟我学Nginx,nginx如何处理请求?

虚拟服务器根据名称(指HTTP请求头中的Host字段)是指HTTP请求头中的主机来确定客户的请求将被处理来自哪台服务器。

让我们从一个简单的设置开始。 下面配置了三个虚拟服务器,全部监听80端口:

在上面的配置中,nginx仅测试“Host”请求头字段来确定请求应该路由到哪台服务器。 如果“Host”的值与任何服务器名称都不匹配,或者请求根本不包含“Host”标头字段,nginx会将请求路由到该端口的默认服务器。

在上面的配置中,默认服务器是第一个-这是nginx的标准默认行为。 您还可以在Listen指令中使用default_server参数来显式定义哪个服务器应该是默认服务器:

如果不允许在没有en-“Host”标头的情况下处理客户端请求(在另一个另一方面,仅处理带有Host标头的客户端请求)客户端请求字段),您可以定义一个仅拒绝请求的服务器:

这里,server_name定义在空字符串上,它将匹配不带“Host”的查询。 头字段并返回一个特殊的标准nginx代码444来关闭连接。

让我们看一个更复杂的设置,其中一些虚拟服务器侦听不同的地址:

在上面的设置中,nginx首先根据服务器块侦听器指令测试请求的IP地址。 和港口。 然后,它根据服务器块中对应于IP地址和端口的server_name条目来测试请求的“Host”标头字段。 如果未找到服务器名称,则请求将由默认服务器处理。 例如,在端口192.168.1.1:80上收到的对www.example.com的请求将由端口192.168.1.1:80上的默认服务器处理,也就是说由第一台服务器处理,因为它没有www.example.com为此端口定义。

前面说过,默认服务器是监听端口的一个属性,不同的端口可以设置不同的默认服务器:

现在我们看看nginx是如何选择查询位置的处理简单、典型的PHP站点:

无论指定的顺序如何,nginx首先搜索文字字符串给出的最具体的前缀位置。 在上面的配置中,唯一的前缀位置是“/”,并且由于它匹配任何查询,因此它将被用作最后的手段。 然后nginx按照配置文件中指定的顺序检查正则表达式给出的位置。 第一个匹配的表达式会停止搜索,nginx将使用该位置。 如果没有正则表达式与查询匹配,nginx将使用之前找到的最具体的前缀位置。

注意:所有位置类型仅测试不带参数的查询行的URI部分。 这是因为查询字符串参数可以通过多种方式给出,例如:

此外,任何人都可以查询查询字符串中的任何内容:

现在让我们看看如何在上面的配置:

上一篇:nginx应用

下一篇:nginx使用教程