跳到主要内容

root和alias的区别

root和alias的区别

配置一:

location /img/ {
alias /var/www/image/;
}

\#若按照上述配置的话,则访问/img/目录里面的文件时,ningx会自动去/var/www/image/目录找文件
配置二:

location /img/ {
root /var/www/image;
}

\#若按照这种配置的话,则访问/img/目录下的文件时,nginx会去/var/www/image/img/目录下找文件。]比如访问链接为 /img/a/a.html则回去/var/www/image/img/a目录下找a.html

**反向代理 proxy\_pass**

如果一个请求过来了,比如 http:/127.0.0.1/mg/123/2.html,如果是下面这种配置,那最后的路由地址是http://apimigu/mg/123/2.html

location /mg{
proxy_pass http://apimigu;
}

若是下面带/的这种配置,那路由后得到的地址是http://apimigu/123/2.html

location /mg{
proxy_pass http://apimigu/;
}

所以结尾有没有/符号很重要
如果转发的和后台有多台服务器,我们可以定义一个upstream 负载均衡

location /mg{
proxy_pass http://apimigu/;
}
upstream apimigu{
# ip_hash; #优先IP hash的规则
server backend1.example.com weight=5;
server backend2.example.com:8080;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
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; # 匹配成功后跳转到百度
找了份正则表达式符号含义表,以供查询
不会这些东东,不敢说你会nginx?不会这些东东,不敢说你会nginx?
rewrite 的最后一项参数flag的作用,一般有四个
值得一提的是,正常情况下nginx会收集所有的rewrite结果集,这和之后要介绍的nginx的三个级别有关

不会这些东东,不敢说你会nginx?不会这些东东,不敢说你会nginx?
对于临时重定向和永久重定向的区别,这里着重说明以下
首先客户端浏览器的URL都会改变;

302重定向是暂时的重定向,搜索引擎会抓取新的内容而保留旧的地址。因为服务器返回302,所以搜索引擎会认为新的网址是暂时的;
301重定向是永久的重定向,搜索引擎会抓取新的内容的同时将旧的地址替换为重定向后的网址;
nginx中 $1,$2 的含义,有个博客讲的很简单易懂,这里直接拷贝

Nginx中,set $para $1,$1表示路径中正则表达式匹配的第一个参数。
以下是一个示例,用以实验$1,$2。

如:location ~/yxl/(.)/(.) {
set $para1 $1
set $para2 $2
content_by_lua_block {
ngx.say(ngx.var.para1)
ngx.say(ngx.var.para2)
}
}
此时,若访问路径为localhost:8080/yxl/qwe/asd时,则浏览器会输出

qwe asd