nginx反向代理一个子路径给webman,但是发现webmen匹配自动路由失败

zh7314

环境是centos7.9
Workerman version:4.0.40 PHP version:8.0.21 Event-Loop:\Workerman\Events\Select

apisix是nginx的一个动态网管服务,视为nginx

使用apisix代理 127.0.0.1:8787 和127.0.0.1:8788

当使用路由代理的是http://127.0.0.1:9080/tp 代理路由配置成 tp的时候去访问,就出404 Not Found
webman

如果是用全匹配 /* 就是没问题
截图

socket没问题
webman这部分有指定前缀路由匹配的设置 或者方案,larave可以指定配置
截图
截图

使用其他网关也有类似问题

1162 1 0
1个回答

ontheway

代理到127.0.0.1:8787的时候应该是带上了/tp的,意思就是请求webman的url是127.0.0.1:8787/tp,那么会请求默认的控制器和方法,也就是127.0.0.1:8787/tp/index/index,显然,你没有配置/tp这个路由,所有就404了

  • zh7314 2022-07-29

    我知道是这样的,但是webman的项目不为了前缀是路由路面专门去匹配,应该是有个全部配置的地方,类似laravel这样

  • ontheway 2022-07-29

    这个可以写一个插件来解决(参考自动路由插件)
    也可以设置路由分组来解决:

    Route::group('/tp', function () {
       Route::any('/user/info', function ($rquest) {return response('user info');});
    });
  • ontheway 2022-07-29

    这个要是Nginx做的代理就比较好解决,你这个apisix配置的路由好像apisix那边没法解决,只能在webman这边解决了

  • ontheway 2022-07-29

    还有个办法,使用多应用,也可以解决,在app下面增加一个tp应用(也就是增加一个tp文件夹)

  • zh7314 2022-07-29

    可以通过多域名,独立一个webman应用可以 使用/*, 但是webman应该支持项目前缀的配置,这个需求在合作类型的项目里是需要的

年代过于久远,无法发表回答
🔝