日常配置nginx,需要针对特定的路径来进行转发,接下来对常用对location配置进行简单的记录
location语法
location [modifier] [URI] {
...
}
[modifier]的可选值如下
none 如果不写修饰符,那么与[URI]路径开始匹配
location /api {
...
}
www.a.com/api [匹配]
www.a.com/api/login [匹配]
= 精确匹配
location = /api {
...
}
www.a.com/api [匹配]
www.a.com/api/login [不匹配]
www.a.com/b/api [不匹配]
~ 区分大小写正则匹配
location ~ /api {
...
}
www.a.com/api [匹配]
www.a.com/Api [不匹配]
~* 不区分大小写正则匹配
location ~* /api {
...
}
www.a.com/a/b/api [匹配]
www.a.com/ApI [匹配]
www.a.com/b/API [匹配]
^~ 字符串开头匹配,如果匹配到了,就不进行后续到匹配
location ^~ /api {
...
}
www.a.com/api [匹配]
www.a.com/api/login [匹配]
www.a.com/bpi [不匹配]
!~ 不匹配(区分大小写)
!~* 不匹配(不区分大小写)
@ nginx内部跳转
location = /index.html {
error_page 404 @index_error;
}
location @index_error {
...
}
nginx实战
前后端分离项目经常会遇到一个场景,前端请求后端时候,需要移除子路径,比如 https://host/api/users
转发到 https://otherhost/users
,那么可以通过 proxy_pass
指令来解决
location ~* ^/api/ {
proxy_pass https://otherhost/
}
当然也可以配合 rewrite 来解决
location ~* ^/api/ {
rewrite ^/api/(.*) /$1 break;
proxy_pass https://otherhost;
}
注意:proxy_pass
最后面的 /
是有区别的
本文为原创,未经授权,禁止任何媒体或个人自媒体转载
商业侵权必究,如需授权请联系340443366@qq.com
最新评论