记录解决在同一个laradocker中多个项目间接口调用不了的问题

由于我是将多个项目放置在同一个laradock环境下, 业务碰到了,两个项目间需要接口调用的需要.
例如 A项目, 域名为: A.com

B项目,域名为B.com;

在A项目某个业务中,需要调用到B项目的某个接口, 在正常情况下,我们就在A项目对应的业务上通过 Curl::post(“http://B.com/XXXX/XXX“) 去调用, 但发现请求结果都是 false, 去B项目对应接口打印日志发现根本就没进来, 同时发现这个接口请求响应时间5s多.

发生问题的原因:

在同一个laradock下, 两个项目共同监听的都是 80 端口, 导致在A项目中通过B项目的域名去请求接口就无法识别是哪个项目,最终请求超时失败.

解决思路: 给B项目增加个监听端口,如 9000, 在A项目中调用B项目接口时通过这个9000端口来实现通讯;

解决办法:

1. 首先. 配置nginx容器,增加 9000端口.

cd /home/laradock vi docker-compose.yml

找到nginx 服务

ports:
 -  "80:80"
 -  "9000:9000"

2. 配置B项目对应的nginx配置, 增加监听 9000端口

listen 80;
listen 9000;

3. 重构+重启 nginx 服务

 > docker-compose stop nginx
 > docker-compose build nginx 
 > docker-compose up -d nginx

4. A项目中调用B项目接口的实现

记得url 使用的是 nginx:9000

$url = "http://nginx:9000/api/v1/sign-verify";
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 5

file nginx容器或者workspace容器增加networks

3个月前 评论
brucezhang (楼主) 3个月前
aliongkk 3个月前

host里面多指定几个项目域名到本地,然后nginx监听对应的域名不好吗?

3个月前 评论
brucezhang (楼主) 3个月前

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