我遇到的问题:

前端用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,但是还有很多细节的东西不知道,实践太少是主要原因。实践是检验知识的强力武器。

  

最新文章

  1. POJ 2253 Frogger(Dijkstra)
  2. ajax 传递JSON对象参数
  3. 【Java】:压缩成多个压缩卷
  4. Java 中的反射机制
  5. 快乐的JS正则表达式(三)
  6. C++ 中 volatile 的使用
  7. Could not create the view: An unexpected exception was thrown.如何解决
  8. iPhone开发之UIScrollView初步
  9. Msys下gcc的配置
  10. Hive操作之HQL语句
  11. Java下拼接执行动态SQL语句(转)
  12. SQL Server函数格式
  13. js 点击 返回顶部 动画
  14. Unsupported major.minor version 52.0报错解决方案
  15. Sublime Text 3 浅色主题
  16. Oracle不连续的值,如何实现查找上一条、下一条
  17. 【BZOJ3456】城市规划(生成函数,多项式运算)
  18. Chart-template
  19. 数学用语中的 透明 transitive property
  20. 使用jsonp跨域发送请求

热门文章

  1. Python坑系列:可变对象与不可变对象
  2. Yii2 yii\helpers\ArrayHelper
  3. nginx配置 send_timeout 引发的js、css解析失败问题
  4. C++ STL中的Binary search(二分查找)
  5. C++ STL栈和队列
  6. 互评Alpha版本 - Hello World团队项目空天猎
  7. 汉诺塔python实现
  8. 2018软工实践—Alpha冲刺(7)
  9. OOP 1.5 类和对象的基本概念与用法1
  10. 关于在eclipse Oxygen 2017环境下spring3.2 asm的异常