比如:我有两个域名,分别指向127.0.0.1
crm.domain.com
api.domain.com
docker搭建3个容器,分别:nginx,php,alpine
本地开发环境
用crm.domain.com/a.php 访问服务端。然后服务端又调用api.domain.com/b.php返回数据给a.php,但是会报错:
cURL error 7: Failed to connect to api.domain.com port 80: Connection refused (see http://curl.haxx.se/libcurl/c...
目前本地分别访问
crm.domain.com/a.php
api.domain.com/b.php
都是没有问题的。因为我在宿主机的/etc/hosts里指向了127.0.0.1'
我理解是要在服务端配下api.domain.com 的hosts 。我在nginx的容器里 配了,但没有用呀
看了半天有点晕。
你现在的环境,是不是其实是 nginx 容器收到 客户端请求 a.php,之后这个 a.php 又去 请求 b.php?
如果是这样的话,a.php 去找 b.php 这个动作是在 php.fpm 这个容器里完成的,而 php 容器应该是既不知道 crm.domain.com 也不知道 api.domain.com ,因为那些本来都归 nginx 管,php 容器看到的 127.0.0.1是他容器自身,里面只有个php-fpm可用,他看不到 nginx 的 80 端口。
本身上了docker之后多个容器之间沟通就是有难度的。
当然这个需求本身是很常见,但是这么做不是很优雅,一般来讲如果有多个 domain ,个人建议是多开 nginx 并使用多端口独立处理的。
如果只用一个 nginx 的话,最好不仅在 /etc/hosts 写域名,还要在,还要写好 expose 和 links ,最好使用compose,保证多个容器间可以不经过宿主机直接通信。