Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
909 views
in Technique[技术] by (71.8m points)

如何使用 Nginx 精准匹配

我有两个 app,一个是 vue + vue-router 生成的静态页面(app-1),一个是 php 动态页面(app-2)。

我现在有一个需求就是,app-1 能匹配到
http://xx.com,
http://xx.com/,
http://xx.com/test1,
http://xx.com/test2
这几个路由,app-2 则负责匹配其他路由。

我在配置里用了精准匹配,配置如下:

# app-1 精准匹配
location = / {
  # 这里是 app-1
  root app-1;
  index index.html;
}

# app-1 的另外两个路由
location ~* ^/(test1|test2) {
  # 这里是 app-1
  root app-1;
}

# 泛匹配
location / {
  # 这里是 app-2
  root app-2;
  index index.php;
}

# php 解析相关
location ~ [^/].php(/|$) {
  fastcgi_pass http://127.0.0.1:9000;
  fastcgi_index index.php;
  ......
}

然后测试的时候,我访问 http://xx.com 总是会路由到 app-2 的页面,精准匹配如果命中后不应该是直接返回命中结果的吗,为什么还会经过后面 app-2 的泛匹配?如果我在精准匹配里改成 return 404; 它倒是能好好如愿。

此外,访问 http://xx.com/test1 以及 http://xx.com/test2 会直接返回 404,可能是因为这两个路由是根据 vue-router 生成的,实际上并不存在 test1 这些目录。

请问我该如何修改配置以实现我上面说的需求?

望能不吝赐教,谢谢。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神解答

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...