不会这些东东,不敢说你会nginx?( 二 )


location /mg{proxy_passhttp://apimigu/; }upstream apimigu{#ip_hash;#优先IP hash的规则server backend1.example.comweight=5;server backend2.example.com:8080;server backup1.example.com:8080backup;server backup2.example.com:8080backup;}serverewrite语法
rewrite是实现URL重写重定向的重要指令,他根据regex(正则表达式)来匹配内容跳转到replacement,结尾是flag标记
配置语法:
Syntax: rewrite regex replacement [flag];rewrite的含义:该指令是实现URL重写的指令 。
regex的含义:用于匹配URI的正则表达式 。
replacement:将regex正则匹配到的内容替换成 replacement 。
flag: flag标记 。
举个小例子
rewrite ^/(.*) http://www.baidu.com/ break;# 匹配成功后跳转到百度找了份正则表达式符号含义表,以供查询

不会这些东东,不敢说你会nginx?

文章插图
 
rewrite 的最后一项参数flag的作用,一般有四个
值得一提的是,正常情况下nginx会收集所有的rewrite结果集,这和之后要介绍的nginx的三个级别有关
不会这些东东,不敢说你会nginx?

文章插图
 
对于临时重定向和永久重定向的区别,这里着重说明以下
首先客户端浏览器的URL都会改变;
  1. 302重定向是暂时的重定向,搜索引擎会抓取新的内容而保留旧的地址 。因为服务器返回302,所以搜索引擎会认为新的网址是暂时的;
  2. 301重定向是永久的重定向,搜索引擎会抓取新的内容的同时将旧的地址替换为重定向后的网址;
nginx中 $1,$2 的含义,有个博客讲的很简单易懂,这里直接拷贝
Nginx中,set $para $1,$1表示路径中正则表达式匹配的第一个参数 。
以下是一个示例,用以实验$1,$2 。
如:location ~/yxl/(.)/(.) {set $para1 $1set $para2 $2content_by_lua_block {ngx.say(ngx.var.para1)ngx.say(ngx.var.para2)}}此时,若访问路径为localhost:8080/yxl/qwe/asd时,则浏览器会输出
qweasdnginx请求执行的几大阶段
详细分的话一共有11个阶段,这里着重介绍rewrite 、access 以及 content 三大阶段
不按代码顺序执行,是按阶段执行,顺序如下:
先执行命中的所有rewrite层指令(下面的set),
再执行access,再执行content(下面的echo)
举个例子语法:
location= / {set $a 32;echo $a;set $a 64;eho $a;}因为是先收集结果,最后再content,所以最后两个打印都是64
 
https://www.linuxprobe.com/hown-nginx-connect.html




推荐阅读