Php 在使用不同的nginx服务时,如何使用HTTP请求访问其他Docker容器?

Php 在使用不同的nginx服务时,如何使用HTTP请求访问其他Docker容器?,php,docker,nginx,docker-compose,Php,Docker,Nginx,Docker Compose,我有两个不同的Docker容器(我们称它们为A和B),它们在同一个网络中(我们称之为AB_网络)。容器在不同的docker compose.yml文件中指定。两者都在运行自己的nginx(称之为NA和NB),它们也在同一个网络AB_NET中。如果我登录到A,我可以通过执行curl http://A:8081访问B,如果我登录到B,我可以通过执行curl http://B:8082访问A。但是如果我使用常规HTTP请求,我就无法从A到达B。我的猜测是,A的nginx无法将调用重定向到B(或者这是不

我有两个不同的Docker容器(我们称它们为A和B),它们在同一个网络中(我们称之为AB_网络)。容器在不同的
docker compose.yml
文件中指定。两者都在运行自己的nginx(称之为NA和NB),它们也在同一个网络AB_NET中。如果我登录到A,我可以通过执行curl http://A:8081访问B,如果我登录到B,我可以通过执行curl http://B:8082访问A。但是如果我使用常规HTTP请求,我就无法从A到达B。我的猜测是,A的nginx无法将调用重定向到B(或者这是不允许的)。我想做的是从B中读取一些数据,并在执行HTTP请求后将其显示在A中。我正在a中运行一个PHP应用程序,nginx.conf文件如下所示:

server {
    index index.html index.php;
    root /var/www/html/public/;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass A:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}
我已尝试使用另一个位置扩展
try\u文件
,并将代理权限传递给B:

server {
    index index.html index.php;
    root /var/www/html/public/;

    location / {
        try_files $uri $uri/ /index.php?$query_string @B;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass A:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    location @B{
        rewrite ^ / break;
        proxy_pass http://B:8082;
    }
}

从某种意义上说,我可以到达B,但请求永远不会发送回a。我只看到B的输出。但我希望它发送回a,在那里我可以处理它。我甚至不能再中断请求了,所以这似乎不正确。

抱歉,这是我的错误,可能是Lumen(我使用的php框架)的问题。它可以工作,我只是在错误的地方搜索。

你能稍微澄清一下设置吗?这听起来像是Docker networking的工作原理——
Docker exec A curl http://B:8082
成功地发出了一个常规的http请求——那么您能否显示失败的调用和收到的错误?Nginx安装核心是问题的核心还是解决问题的尝试?Lumen(我使用的php框架)由于任何原因都无法处理响应。如果我直接返回它,它会工作。对不起,我找错地方了。