请教一个 ingress 规则的问题
我们目前有三个服务使用相同的域名,想通过路径划分开:
- laravel 提供的 http 服务 api
- laravel-echo-server 提供的 ws 服务 ws-a
- 另一个 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;
请问大家能否看出什么问题。
我证书只用一个,包含域名的全部主机