我遇到的问题:

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

  

nginx 前后分离,地址重写,url匹配中遇到的问题的更多相关文章

  1. Nginx服务的地址重写

    调整Nginx服务器配置,实现: 1.所有访问a.html的请求,重定向到b.html; 2.所有访问Nginx服务器(192.168.4.1)的请求重定向至www.baidu.com: 3.所有访问 ...

  2. nginx配置location项的URL匹配规则

    Localtion URL的正则匹配规则 示例 location / { try_files $uri @apache; } #所有的路径都是/开头,表示匹配所有 location @apache { ...

  3. nginx 动静分离(相同URL)

    #报表 location ~* /(report)/ { if ($request_uri !~* .*(jd|taobao|operator).* ){ proxy_pass http://tweb ...

  4. nginx反向代理,负载均衡,动静分离,rewrite地址重写介绍

    一.rewrite地址重写 地址转发后客户端浏览器地址栏中的地址显示是不变的,而地址重写后地址栏中的地址会变成正确的地址. 在一次地址转发过程中只会产生一次网络请求,而一次地址重写产生两次请求. 地址 ...

  5. nginx篇最初级用法之地址重写

    nginx服务器的地址重写,主要用到的配置参数是rewrite rewrite regex replacement flag rewrite 旧地址 新地址 [选项] 支持的选项有: last 不再读 ...

  6. 高级运维(三):部署Lnmp环境、构建Lnmp平台、地址重写

    一.部署LNMP环境 目标: 安装部署Nginx.MariaDB.PHP环境 1> 安装部署Nginx.MariaDB.PHP.PHP-FPM: 2> 启动Nginx.MariaDB.FP ...

  7. urlrewrite 地址重写

    环境: Maven 3.0.4 Urlrewrite 2.5.2 Myeclipse 8.6.1 借此机会顺便提一下 Maven Project 的创建,会了的朋友或还不想了解 Maven 的朋友,可 ...

  8. urlrewrite重写url(转)

    环境: Maven 3.0.4 Urlrewrite 2.5.2 Myeclipse 8.6.1 借此机会顺便提一下 Maven Project 的创建,会了的朋友或还不想了解 Maven 的朋友,可 ...

  9. 项目搭建系列之四:SpringMVC框架下使用UrlRewrite实现地址重写

    简单记录一下UrlRewrite实现地址重写功能. 1.pom.xml 在pom.xml增加配置UrlRewrite jar <!-- URL Rewrite --> <depend ...

随机推荐

  1. 【探路者】Alpha发布用户使用报告

    预期统计用户使用数量:13人. 博文内容:1用户列表.2评论列表.3统计与总结 1用户列表: 二.评论内容 用户1:1不够好看.2不应该是中国地图为背景,蛇头是人物头像的么?(那是宣传片,不是预览图) ...

  2. 20172305 暑假作业 之 TimeCalculate & Save Iron Man

    20172305 暑假作业 之 TimeCalculate & Save Iron Man TimeCalculate 项目介绍 项目名称: TimeCalculate 项目简介: 本项目基于 ...

  3. 每日Scrum--No.3

    Yesterday:帮着队友一起打开地图 Today:学习迪杰斯特拉算法,试着编写程序代码 Problem:语法逻辑出错,在执行的时候,有的时候出现死循环,有的时候屏幕出现null和乱码.语句的编写有 ...

  4. SSH 框架的心得

    使用SSH框架做完了一个普通网站的前后台项目,成热写点心得,免得以后再入坑.其中使用 Strust2  2.3.33 + Spring 4.3.9 + Hibernate 5.2.10 eclipse ...

  5. JS高级 2

    递归:函数自己调用自己 在JavaScript中唯一能产生作用域的东西是 函数!js中只有函数可以创建作用域 词法作用域,也叫做静态作用域 //就是在代码写好的那一刻,变量和函数的作用域就已经确定了, ...

  6. POSt 提交参数 实体 和字符串

    //1.后台接受是 字符串形式 [HttpPost] public int SendTaxiAudioByWX(string userid, string suid, string indexno, ...

  7. tooltips & click copy

    tooltips & click copy shit antd & tooltips & click copy https://codesandbox.io/s/zx4wo7y ...

  8. DHCP:动态主机配置协议

    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP ...

  9. Linux下启用MySQL慢查询

    MySQL在linux系统中的配置文件一般是my.cnf找到[mysqld]下面加上log-slow-queries=/data/mysqldata/slowquery.loglong_query_t ...

  10. bzoj4754[JSOI2016]独特的树叶

    这个题....别人写得怎么都....那么短啊? 我怎么....WA了好几次啊....怎么去loj扒了数据才调出来啊? 这个算法...怎么我还是不知道对不对啊 怎么回事啊怎么回事啊怎么回事啊? 请无视上 ...