如何在来自nginx反向代理的docker容器之间转发请求,以响应nginx中的路由?

如何在来自nginx反向代理的docker容器之间转发请求,以响应nginx中的路由?,nginx,docker-compose,react-router,nginx-reverse-proxy,Nginx,Docker Compose,React Router,Nginx Reverse Proxy,我在下面的源代码中使用GitHub repo来设置DockerFile和docker compose,并在其上构建 它的工作原理是,有一个Nginx反向代理,它根据URL向客户端(react)或后端(node js)发送请求 这适用于单页页面。我通过react-routes-dom在一个react中添加了多个页面。我像下面那样设置它,当我npm启动react代码并访问localhost:3000/path时,它就会工作 函数Main(){ 返回( ); } 当我试图通过反向代理访问它时,问题就

我在下面的源代码中使用GitHub repo来设置DockerFile和docker compose,并在其上构建

它的工作原理是,有一个Nginx反向代理,它根据URL向
客户端
(react)或
后端
(node js)发送请求

这适用于单页页面。我通过
react-routes-dom
在一个react中添加了多个页面。我像下面那样设置它,当我
npm启动
react代码并访问
localhost:3000/path
时,它就会工作

函数Main(){
返回(
);
}
当我试图通过反向代理访问它时,问题就出现了。配置与回购协议中的配置几乎相同

当我尝试访问其他路线时,问题就出现了。 如果我尝试访问基本路径
localhost
。它起作用了。 如果我尝试访问路径
localhost/path
,它将不起作用

用于访问base的日志
/

client | 172.18.0.5 - - [06/Apr/2021:11:51:15 +0000] "GET / HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36" "-"

nginx | 172.18.0.1 - - [06/Apr/2021:11:51:15 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36" "-"
用于访问自定义路径的日志

nginx | 172.18.0.1 - - [06/Apr/2021:11:52:43 +0000] "GET /path HTTP/1.1" 404 555 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36" "-"

client | 2021/04/06 11:52:43 [error] 31#31: *7 open() "/usr/share/nginx/html/path " failed (2: No such file or directory), client: 172.18.0.5, server: , request: "GET /path HTTP/1.0", host: "client"

client | 172.18.0.5 - - [06/Apr/2021:11:52:43 +0000] "GET /path HTTP/1.0" 404 555 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36" "-"
我试图修改conf文件,如下。它们都不起作用

我试图将所有流量重定向到
/
,以便对路径有所帮助,但我得到了一个空页面

location / {
    rewrite /(.*) / break;
    proxy_pass http://client;
  }

来源:

在重新思考并阅读了这里的解决方案后,我意识到我误解了React中路由的概念

我之前所做的是,我试图将
反向代理
conf文件中的静态重新路由应用于Nginx主机,这是错误的!它把我带到了另一页

我必须将其应用于承载React构建本身的Nginx。这样,重定向是客户端的

我应用了上面引用的链接和问题中的链接中提出的
Catch all
方法,效果很好

我希望这篇文章能为未来的读者提供清晰的信息