鍍金池/ 問答/PHP  Linux  網(wǎng)絡(luò)安全/ docker 服務(wù)端hosts如何配置

docker 服務(wù)端hosts如何配置

比如:我有兩個域名,分別指向127.0.0.1
crm.domain.com
api.domain.com
docker搭建3個容器,分別:nginx,php,alpine

本地開發(fā)環(huán)境
用crm.domain.com/a.php 訪問服務(wù)端。然后服務(wù)端又調(diào)用api.domain.com/b.php返回數(shù)據(jù)給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'

我理解是要在服務(wù)端配下api.domain.com 的hosts 。我在nginx的容器里 配了,但沒有用呀

回答
編輯回答
你的瞳

看了半天有點暈。

你現(xiàn)在的環(huán)境,是不是其實是 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之后多個容器之間溝通就是有難度的。

當然這個需求本身是很常見,但是這么做不是很優(yōu)雅,一般來講如果有多個 domain ,個人建議是多開 nginx 并使用多端口獨立處理的。

如果只用一個 nginx 的話,最好不僅在 /etc/hosts 寫域名,還要在,還要寫好 expose 和 links ,最好使用compose,保證多個容器間可以不經(jīng)過宿主機直接通信。

2018年5月22日 05:29