laradock项目间请求报错Failed to connect port 80. Connection refused 怎么解决

场景:

多个laravel项目,需要请求一个api项目。

环境:

mac、laradock

laradock/nginx/sites/xxx.conf已成功配置;
host文件域名映射已添加;
在laravel项目.env文件中设置的请求地址:APP_POST_URL=dev.xxx

问题:

当运行该项目时,涉及到请求api时会报错:
cURL error 7: Failed to connect to dev.xxx port 80: Connection refused (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

自测:

1.浏览器访问该api域名dev.xxx、dev.xxx:80 都成功
2.命令行curl dev.xxx、curl dev.xxx:80 都成功

尝试:
修改docker-compose.yml文件的nginx server配置项frontend、backend,无效

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
Summer
最佳答案

尝试下设置 aliases :

      networks:
        frontend:
        backend:
          aliases:
            - project1.local
            - project2.local
2年前 评论
遇白 (楼主) 2年前
遇白 (楼主) 2年前
遇白 (楼主) 2年前
讨论数量: 10
Summer

用 file_get_contents 排除是不是 PHP 里 curl 设置的问题:

$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
2年前 评论
遇白 (楼主) 2年前
Summer

尝试下设置 aliases :

      networks:
        frontend:
        backend:
          aliases:
            - project1.local
            - project2.local
2年前 评论
遇白 (楼主) 2年前
遇白 (楼主) 2年前
遇白 (楼主) 2年前

重新调试发现:
命令行(未进入容器)curl dev.xxx、curl dev.xxx:80 都成功

命令行(进入容器)curl dev.xxx、curl dev.xxx:80 报错: curl: (7) Failed to connect to dev.xxx port 80: Connection refused

然后查阅到此回答,消化一下

file

2年前 评论

我也遇到这个问题了,的确如你所说,多个laravel项目在Docker容器下交互会出现cURL error 7问题,参考一下这篇文章,我认为这个方法可行:lifesaver.codes/answer/routing-iss...

2年前 评论
TakK (作者) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!