千家信息网

ngnix中转发请求之server和location配置的示例分析

发表于:2024-10-03 作者:千家信息网编辑
千家信息网最后更新 2024年10月03日,这篇文章给大家分享的是有关ngnix中转发请求之server和location配置的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。比如URL:www.mask_de
千家信息网最后更新 2024年10月03日ngnix中转发请求之server和location配置的示例分析

这篇文章给大家分享的是有关ngnix中转发请求之server和location配置的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

比如URL:www.mask_dev2.com:9999/login/

server管的前半部分,即:www.mask_dev2.com:9999

location管的是后半部分,即:/login/

一个nginx可以配置多个server。

每个server可以配置多个location。

URL的前半部分控制选择哪一个server,后半部分控制选择哪一个location,最终决定往哪里去请求.

server的配置

server { listen 9999; server_name www.mask_dev2.cn; location / {  default_type text/html;  content_by_lua '   ngx.say("

first

") '; }}server { listen 9999; server_name www.mask_dev2.*; location / { default_type text/html; content_by_lua ' ngx.say("

second

") '; }}server { listen 9998; server_name _; location / { default_type text/html; content_by_lua ' ngx.say("

third

") '; }}

首先,请求nginx的地址,肯定是请求的nginx所在的服务器,也就是说ip是固定的。

也就是说,无所谓server_name是什么,都是指的当前服务器.

那么当前服务器是怎样对应多个域名呢,这个只需要在相应的dns服务器中进行添加,就行了,比如暂时把本机当成dns服务器,修改hosts

127.0.0.1 localhost
127.0.0.1 www.mask_dev2.cn
127.0.0.1 www.mask_dev2.com

server匹配顺序

server_name与host匹配优先级如下:

1、完全匹配
2、通配符在前的,如*.test.com
3、在后的,如www.test.*
4、正则匹配,如~^\.www\.test\.com$

如果都不匹配

1、优先选择listen配置项后有default或default_server的
2、找到匹配listen端口的第一个server块

location配置

找到server之后,再去找具体的location

server { listen 9998; server_name _; location = / {   #规则A  }  location = /login {   #规则B  }  location ^~ /static/ {   #规则C  }  location ~ \.(gif|jpg|png|js|css)$ {   #规则D  }  location ~* \.png$ {   #规则E  }  location !~ \.xhtml$ {   #规则F  }  location !~* \.xhtml$ {   #规则G  }  location / {   #规则H  }

语法规则:

location [=||*|^~] uri { … }

  1. = 开头表示精确匹配

  2. ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ static /aa匹配到(注意是空格)。

  3. ~ 开头表示区分大小写的正则匹配

  4. ~* 开头表示不区分大小写的正则匹配

  5. !和!*分别为区分大小写不匹配及不区分大小写不匹配 的正则

  6. / 通用匹配,任何请求都会匹配到。

  7. 多个location配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):

首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

但是一般没有这么复杂,有3点。

  1. 默认请求。

  2. 页面请求.

  3. 后台逻辑请求.

#直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,官网如是说。 #这里是直接转发给后端应用服务器了,也可以是一个静态首页 # 第一个必选规则 location = / {   proxy_pass http://tomcat:8080/index } # 第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项 # 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用 location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {   root /webroot/res/; } #第三个规则就是通用规则,用来转发动态请求到后端应用服务器 #非静态文件请求就默认是动态请求,自己根据实际把握 #毕竟目前的一些框架的流行,带.php,.jsp后缀的情况很少了 location / {   proxy_pass http://127.0.0.1:8080/ }

感谢各位的阅读!关于"ngnix中转发请求之server和location配置的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

0