请教一个 ingress 规则的问题

我们目前有三个服务使用相同的域名,想通过路径划分开:

  1. laravel 提供的 http 服务 api
  2. laravel-echo-server 提供的 ws 服务 ws-a
  3. 另一个 laravel-echo-server 服务 ws-b

由于想少用点证书,于是想部署到相同的域名。另外因为 laravel-echo-server 只能配置一个授权校验接口地址,虽然项目一样但授权的 guard 不一样,所以采用了两个仅在配置有区别的 laravel-echo-server 容器进行部署。

目前采用的是 nginx-ingress 控制器。

我想让 /a/socket.io 通过 rewrite 到 ws-a:6001/socket.io/
/b/socket.io 通过 rewrite 到 ws-b:6002/socket.io/
其他的请求到 api:80

现在遇到的问题是:

看了一下 ingress 的日志,能看到 /a/socket.io 被反向代理到某个 ip 上类似:

http://10.217.0.70:6001/socket.io/?EIO=3&transport=polling&t=NYIiUjD

我尝试着在 ingress 的 pod 里面curl访问这个 url ,返回正常。

但从 ingress 的容器日志上看到的全都是 400 状态,类似下面这样:

x.x.x.x - [x.x.x.x] - - [02/Apr/2021:21:36:30 +0800] "GET /a/socket.io/?EIO=3&transport=polling&t=NYIpAdf HTTP/1.1" 400 11 "http://a.b.c.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" 472 0.005 [default-ws-a-6001] 10.217.0.70:6001 11 0.005 400 d6f1ba5289fd42baa8d8e0d818795af1 a.b.d.com []

是 rewrite 规则有问题吗?貌似看不出有什么问题:

rewrite "(?i)/a/socket.io" /socket.io/ break;

请问大家能否看出什么问题。

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 1

我证书只用一个,包含域名的全部主机

  • @.example.com
  • *.example.com
3年前 评论
小李世界 (作者) 3年前
sanders (楼主) 3年前
sanders (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!