在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
简单梳理一下nginx中关于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("<p>first</p>") '; } } server { listen 9999; server_name www.mask_dev2.*; location / { default_type text/html; content_by_lua ' ngx.say("<p>second</p>") '; } } server { listen 9998; server_name _; location / { default_type text/html; content_by_lua ' ngx.say("<p>third</p>") '; } } 首先,请求nginx的地址,肯定是请求的nginx所在的服务器,也就是说ip是固定的。 也就是说,无所谓server_name是什么,都是指的当前服务器. 那么当前服务器是怎样对应多个域名呢,这个只需要在相应的dns服务器中进行添加,就行了,比如暂时把本机当成dns服务器,修改hosts
server匹配顺序 server_name与host匹配优先级如下: 1、完全匹配 如果都不匹配 1、优先选择listen配置项后有default或default_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 { … }
首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。 但是一般没有这么复杂,有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/ } 总结 比如,现在同时启动 前台系统,和后台系统,就可以用两个server(可以配置host为api,admin,或者直接修改端口也可以),每个server中3个location来确定具体页面的请求. 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持极客世界。 |
请发表评论