【已解决】部署在宿主机的nginx转发到微服务网关提示 您的应用正在准备中,请稍等一会儿

现在的流程是 外网请求到nginx,然后nginx再去请求微服务的网关,这样没数据
直接请求网关地址,这样有数据


image

下面是直接通过网关请求的相应接口

外部 NGINX 配置的访问域名,在Rainbond 这个服务的网关上绑定了么


这里绑定的嘛

如果没有绑定的话,我直接访问网关的时候应该就访问不了吧

看你第一个请求是 /api/admin ,失败了
第二个请求是 /admin ,成功了。
是否是你代理的路径不对,尝试更改你下面请求成功的路径

这是nginx的配置,代理的直接是网关的地址
proxy_pass http://99**************************.grapps.cn/;
image
第一个有api的是通过外网环境访问的
第二个没有api的是直接通过网关访问的

贴一下通过外网访问的状态码,如是404,请检查访问路径

尝试把 proxy_pass 代理的那个路径里,最后的 / 去掉


还是不行

不通过代理,直接 grapps.cn/api/admin ,尝试下

这样的话,是没有这个接口的

你不是通过nginx代理了一层 api吗,不通过这个api,直接访问是否可以请求到,如可以那不是rainbond的问题。

不通过api,是可以请求到的,但是nginx代理的地址是rainbond自动生成呀。。我直接代理另外跑在宿主机的微服务网关地址就没问题。

需要关注的点,是 :
通过外部代理访问 Rainbond 上的 http 服务,则一定要在转发过程中,将绑定在 Rainbond 上的域名信息一并转发到 Rainbond 的网关上。

根据你的情况,提出以下建议:

Nginx 的配置中,不要使用 7 层代理,而使用 4 层代理,直接把流量转发到那个地址上去。

如果你一定要使用 7 层代理,那么 nginx 起 http server 时候,要绑定一个域名,并且,这个域名要在 Rainbond 中的那个服务组件的端口上绑定。

问题排查到了,是nginx配置了proxy_set_header Host $http_host;导致请求不到
如果不配置就能请求到
但是不配置的话,后端就拿不到用户请求的真实host了
具体效果参考的这篇文章:https://www.cnblogs.com/faberbeta/p/nginx008.html

棒棒的~

老哥老哥!~我们现在是需要nginx的这个配置呀。。。
但是配置上了又代理不过去

那你的 nginx 访问时,有配置域名吗? 还是直接 ip 访问的

暂时是测试环境,外网是通过ip访问的,还没给测试环境配域名