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;}serve
rewrite语法
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;# 匹配成功后跳转到百度
找了份正则表达式符号含义表,以供查询
文章插图
rewrite 的最后一项参数flag的作用,一般有四个
值得一提的是,正常情况下nginx会收集所有的rewrite结果集,这和之后要介绍的nginx的三个级别有关
文章插图
对于临时重定向和永久重定向的区别,这里着重说明以下
首先客户端浏览器的URL都会改变;
- 302重定向是暂时的重定向,搜索引擎会抓取新的内容而保留旧的地址 。因为服务器返回302,所以搜索引擎会认为新的网址是暂时的;
- 301重定向是永久的重定向,搜索引擎会抓取新的内容的同时将旧的地址替换为重定向后的网址;
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时,则浏览器会输出qweasd
nginx请求执行的几大阶段详细分的话一共有11个阶段,这里着重介绍rewrite 、access 以及 content 三大阶段
不按代码顺序执行,是按阶段执行,顺序如下:
先执行命中的所有rewrite层指令(下面的set),
再执行access,再执行content(下面的echo)
举个例子语法:
location= / {set $a 32;echo $a;set $a 64;eho $a;}
因为是先收集结果,最后再content,所以最后两个打印都是64https://www.linuxprobe.com/hown-nginx-connect.html
推荐阅读
- 春季肥胖易引起多种疾病 吃这些中药可有效减肥
- 春季肾病为何这么容易被忽视 这些症状要提高警惕
- 春天女生吃什么蔬菜好 这些食物不要错过
- 字符串操作 - 看这些就够了
- 局域网IP不止192.168 了解这些实用又安全
- 喝了浓茶会不会失眠,喝浓茶好不好
- 项梁如果不死,刘邦能胜吗 项梁不死项羽不会失败
- 家庭用什么样的跑步机最好呢?
- 要谨记这些物业消防安全知识
- 抗感冒试试这些招数,茶叶4大法宝的用处