nginx 前后分离,地址重写,url匹配中遇到的问题
我遇到的问题:
前端用vue的路由做页面路由,后台用spring mvc做数据接口,但是遇到路由地址和接口地址无法区分的问题,导致nginx无法正确准发比如:
1)http://127.0.0.1/iroma/person 页面路由导航
2)http://127.0.0.1/login/login 后端接口url (虽然可以采用.do 或者.action类似的方法,以后缀为过滤条件,但是觉得太low,而且后缀是多余的,看着也不美观)
以上两个接口无法通过 nginx的匹配规则来区分。
解决的办法:
1)修改前端的接口,为所有的接口前面都加上api,比如 http://127.0.0.1/login/login 改后为:http://127.0.0.1/api/login/login(虽然和加.do有异曲同工之处,但是个人觉得这样更好,虽然我不是处女座的:) )
2 ) 修改nginx匹配规则,并且去掉前端请求url中的 /api ,因/api这对后端来说,没有什么意义,需要在后端所有接口都加上/api 难免让人有点不爽。
location / {
root html/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location ~^/api/[^\/]+/[^\/]+ {
rewrite ^(/api)(.*)$ $2 break;
proxy_pass http://myServer;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
修改匹配规则是遇到两个问题
1. 匹配不到api
/api/test 可以转发到服务器,但是/api/test/test就无法转发到服务器,后来参考https://blog.coding.net/blog/tips-in-configuring-Nginx-location这篇文章解决掉了,
2. 对rewrite 不熟悉,虽然也是正则,但是看得还是一脸蒙蔽。好在参考https://www.cnblogs.com/pycode/p/6588896.html这边文章解决了
总结:
虽然勉强会配置nginx,但是还有很多细节的东西不知道,实践太少是主要原因。实践是检验知识的强力武器。
最新文章
- POJ 2253 Frogger(Dijkstra)
- ajax 传递JSON对象参数
- 【Java】:压缩成多个压缩卷
- Java 中的反射机制
- 快乐的JS正则表达式(三)
- C++ 中 volatile 的使用
- Could not create the view: An unexpected exception was thrown.如何解决
- iPhone开发之UIScrollView初步
- Msys下gcc的配置
- Hive操作之HQL语句
- Java下拼接执行动态SQL语句(转)
- SQL Server函数格式
- js 点击 返回顶部 动画
- Unsupported major.minor version 52.0报错解决方案
- Sublime Text 3 浅色主题
- Oracle不连续的值,如何实现查找上一条、下一条
- 【BZOJ3456】城市规划(生成函数,多项式运算)
- Chart-template
- 数学用语中的 透明 transitive property
- 使用jsonp跨域发送请求
热门文章
- Python坑系列:可变对象与不可变对象
- Yii2 yii\helpers\ArrayHelper
- nginx配置 send_timeout 引发的js、css解析失败问题
- C++ STL中的Binary search(二分查找)
- C++ STL栈和队列
- 互评Alpha版本 - Hello World团队项目空天猎
- 汉诺塔python实现
- 2018软工实践—Alpha冲刺(7)
- OOP 1.5 类和对象的基本概念与用法1
- 关于在eclipse Oxygen 2017环境下spring3.2 asm的异常