Nginx常用功能(5)

一、反向代理

1、多域名跳转(location)
location / {
}
location /admin {
}
 
location / {
}
注意;web后面的"/",如果web为文件,没问题;如果web为文件夹就必须加斜杠,不然会出错。
 

2、rewirite(重定向)

server {
server_name www.test.com;
rewirite ^/(.*)$ http://www.newtest.com/$1 permanent;
}
将(.*)作为正则匹配的第一个分组,$1.
www.test.com/a/b/c.html =>www.newtest.com/a/b/c.html
 

3.alias(别名)

location /i {
alias /var/www/html/images/;
}
请求/i/a.jpg资源时,Nginx会在服务器上查找/var/www/html/images/a.jpg。
/i 就是/var/www/html/images/的别名,也就是 /i == /var/www/html/images/
与root的区别是:/i会作为根目录后面的资源。如上面root中的资源请求为:/var/www/html/images/i
 

4.location(定位)

location = / {
configaaaa
}
location / {
configaaaa
}
 
location ^~ /images/ {
configaaaa
}
location ~* .(gif|jpg|jpeg|swk)$ {
configaaaa
}
各符号的含义:
~ 表示区分大小写,且匹配
~* 表示不区分大小写,且匹配
!~ 表示区分大小写,且不匹配
!~* 表示不区分大小写,且不匹配
* 表示任意
^ 表示开头
$ 表示结尾
. 需要转义
 
 

5、特殊

location / {
autoindex on; #目录列表
}
 
allow、deny允许和禁止某些ip
 

6、URL重写应用

if命令
比如,根据请求的资源存在与否进行URL重定向。
~ 表示区分大小写,且匹配
~* 表示不区分大小写,且匹配
!~ 表示区分大小写,且不匹配
!~* 表示不区分大小写,且不匹配
-f 和!-f 文件存在与否
-d 和!-d 目录存在与否
-e和!-e 文件或目录存在与否
-x和!-x 文件可执行与否
比如:
location ~* .(gif|jpg|jpeg|swk)$ {
if (!-f $request_filename)
{
root /var/www/html/img;
}
 
if (!-f $request_filename)
{
root /var/www/html/imgaes;
}
}
会一次匹配,最后如果没有则会返回404错误。
 
rewrite命令
rewirite ^/(.*)$ http://www.newtest.com/$1 permanent;
最后一项为标记,常用的标记有:
last:表示完成rewrite之后搜索对应的URI或location
break:终止
redirect:302普通重定向
permanent :301永久重定向
 
set命令
一般为变量设置值。例如:
location / {
proxy_pass http://127.0.0.1:8000;
set $query $query_string;
rewirite /aaa http://www.newtest.com/?$query;
}
如果$query_string=111,如果请求/aaa则会重定向到http://www.nettest.com/?age=111
 
break命令
匹配到后,终止匹配
原文地址:https://www.cnblogs.com/skyflask/p/7512670.html