美文网首页
解决在同一个laradocker中多个项目间接口调用不了的问题

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

作者: php_bruce | 来源:发表于2023-07-11 17:46 被阅读0次

由于我是将多个项目放置在同一个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"

在ports: 下增加监听 9000端口, 具体如上图;

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

  listen 80;
  listen 9000;

3. 重构+重启 nginx 服务

 > cd /home/laradock
 > docker-compose stop nginx
 > docker-compose build nginx 
 > docker-compose up -d nginx 

// 看一下nginx 新增监听端口有没有启动 // 先看一下nginx 的容器ID

 > docker ps > docker inspect 1acd

说明启动了.

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

记得url 使用的是 http://nginx:9000

$url = "http://nginx:9000/api/v1/sign-verify";

相关文章

网友评论

      本文标题:解决在同一个laradocker中多个项目间接口调用不了的问题

      本文链接:https://www.haomeiwen.com/subject/kcmntrtx.html