Restheart前面的Nginx代理配置

Restheart前面的Nginx代理配置,nginx,proxy,docker-swarm,restheart,Nginx,Proxy,Docker Swarm,Restheart,我在一个docker(swarm,单节点)容器中,在Restheart应用程序前面,作为前端反向代理运行nginx,提供Restheart REST服务 我使用的是阿尔卑斯山上ngninx的最新docker图像。 配置文件附在下面 作为后端,我使用的是Restheart的标准mvn build uberJar,其中大多数情况下只有REST Resources访问的根被移动到/api而不是/。当直接访问时,它可以完美地工作 当我直接在(打开调试)8080端口上测试上游服务器(Restheart)时

我在一个docker(swarm,单节点)容器中,在Restheart应用程序前面,作为前端反向代理运行nginx,提供Restheart REST服务

我使用的是阿尔卑斯山上ngninx的最新docker图像。 配置文件附在下面

作为后端,我使用的是Restheart的标准mvn build uberJar,其中大多数情况下只有REST Resources访问的根被移动到/api而不是/。当直接访问时,它可以完美地工作

当我直接在(打开调试)8080端口上测试上游服务器(Restheart)时,所有RESTAPI都按预期工作

我使用httpie进行测试

当我在端口8081上通过nginx时,使用相同的请求,/api/。。。和/_逻辑路径/。。。被捕获并按预期工作

出于我无法理解的原因,/_authtokens/。。。和/browser/路径不会传递到上游Restheart服务器,但最终会被第一个块捕获,试图在本地文件系统中的/usr/share/nginx/html/…找到具有该名称的文件

真正困扰我的是,我不明白为什么它在前两条路径上都能完美工作,而在其他两条路径上却不能

如有任何关于在何处查找/搜索的提示或指示,将不胜感激?(已经在谷歌上搜索了我的头发好几天了…;-)

泽维尔

尝试删除nginx conf文件中的
location/
条目或将其移到末尾。

尝试删除nginx conf文件中的
location/
条目或将其移到末尾。

我们过去在nginx配置中遇到过类似的问题。在我们的例子中,我们使用了regex语法来表示位置,它是有效的。比如:

location ~ /(api|browser|_logic|ping|_authtokens) {
    proxy_pass http://docker-restheart;
}

参考:

我们过去在Nginx配置方面也遇到过类似的问题。在我们的例子中,我们使用了regex语法来表示位置,它是有效的。比如:

location ~ /(api|browser|_logic|ping|_authtokens) {
    proxy_pass http://docker-restheart;
}

参考:

谢谢安德里亚。如果我移动位置,则不会更改。我不想删除,因为最终,我想在根目录下提供nginx的静态内容,而不需要经过restheart/undertow…谢谢Andrea。如果我移动位置,则不会更改。我不想删除,因为最终,我想在根目录下提供nginx中的静态内容,而不需要经过restheart/undertow…谢谢@mturatti。你(间接地)帮我找到了答案。没有太多的正则表达式,也没有正则表达式,但是在位置之外的各种proxy_xxx指令的分解是一个问题。我把它移到了位置块中,复制了,现在它工作正常了。不知道为什么factoring与/api和/_逻辑一起工作,而不是与/browser或/_authtokens一起工作……谢谢@mturatti。你(间接地)帮我找到了答案。没有太多的正则表达式,也没有正则表达式,但是在位置之外的各种proxy_xxx指令的分解是一个问题。我把它移到了位置块中,复制了,现在它工作正常了。不知道为什么因子分解与/api和/_逻辑一起工作,而不是与/browser或/_authtokens一起工作。。。
location ~ /(api|browser|_logic|ping|_authtokens) {
    proxy_pass http://docker-restheart;
}