网址重写
在前后端分离的开发模式下,会有这样的需求:前端通过特定的路由前缀访问后端接口,例如:这里的api是每个添加的前缀前端。 nginx需要将其转换为后端访问端口和路由,例如::8080/,从而访问服务。
这就涉及到一个URL重写的概念,可以通过多种方式实现。 由于前端程序打包,静态文件发布在nginx上,我们需要通过nginx指令重写url。 写。
匹配规则
在使用指令之前,我们需要熟悉匹配规则。
这里只涉及常用的语法:
1. = 开头完全匹配,停止搜索,立即处理请求
例:
location = /login {
#规则A
}
location / {
#规则B
}
http://localhost/login 将匹配规则A
http://localhost/register 则匹配规则B
3. ~* 不区分大小写匹配(可用正则表达式)
location ~ \.(gif|jpg|png|js|css)$ {
#规则D
}
location ~* \.png$ {
#规则E
}
http://localhost/a.PNG 则匹配规则E,
不会匹配规则D,因为规则E不区分大小写
4. !~ 大小写不匹配
5. !~* 不区分大小写的不匹配
6.^~如果路径中有匹配,则不测试正则表达式
使用规则
1. nginx-使用语法:
rewrite regex replacement [flag];
二、参数介绍
3.使用示例
比如现在转发请求到:8080/,配置如下:
location ^~ /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://localhost:8080;
}
匹配:如果路由中匹配到/api/,则执行该规则。
正则模式:以/api/开头,子表达式匹配任意数量的单个字符,结束。
尖端
1.React(umi)页面刷新404,配置
try_files $uri $uri/ /index.html;
参考