zoukankan      html  css  js  c++  java
  • 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,但是还有很多细节的东西不知道,实践太少是主要原因。实践是检验知识的强力武器。

      

  • 相关阅读:
    webform单选、复选
    webform下拉列表、列表框
    webform文本框 、显示文字、按钮、跳转页面、页面传值
    sol函数初级查询,去重、分组、排序
    sql基础
    递归
    函数有多个返回值
    Hibernate (开放源代码的对象关系映射框架)介绍
    extjs介绍
    easyui介绍
  • 原文地址:https://www.cnblogs.com/oskyhg/p/9329595.html
Copyright © 2011-2022 走看看