使用egg.js过程中遇到的问题:curl请求到nginx服务器,但目标的反向代理无法生效
发布于 8 个月前 作者 HOTTIN 2064 次浏览 来自 问答

Node Version: v8.9.3 Egg Version: v2.0.0

在使用eggjs框架时遇到如下的问题, 我的测试环境 /etc/hosts 10.200.33.33 haha.ttt.com 映射到测试服务器

在代码中controller层向该地址请求数据 ctx.curl('http://haha.ttt.com', opts); 这里url是nginx服务器的域名,因为是测试环境,所以配置了hosts映射,但此时发出的请求,会返回404, 感觉像是nginx反向代理无法生效

直接在环境中使用curl命令去请求域名是可以代理成功的, 但在代码中使用域名就会返回404,和curl直接请求IP是一样的情况,很困惑。。。

7 回复

如果是 404 的话,有可能是你 nginx 配置错误。 host 没成功的话不应该是 404 而是 timeout 啥的。

可是我直接在shell中用curl命令去调接口是可以通的,两个接口可以被代理到不同的服务器,都能正常返回

你写一个 node http 试试

弱弱的问问楼主,你用的egg-mysql数据库插件吗还是egg-mongoose插件

@zuoyi615 我这边用的是egg-knex

是因为这边为了节省资源,nginx同一个IP端口绑了多个域名,暂时是nginx换了端口,ctx.curl直接请求IP端口解决了

看过Nignx的访问日志没? 适当配置一下nginx日志格式有助于定位是不是nginx问题。

回到顶部