docker 服务端hosts如何配置

发布于 2022-09-06 08:15:41 字数 567 浏览 19 评论 0

比如:我有两个域名,分别指向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的容器里 配了,但没有用呀

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

看了半天有点晕。

你现在的环境,是不是其实是 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,保证多个容器间可以不经过宿主机直接通信。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文