我在Docker中玩弄我的本地开发环境。我现在的设置是5个容器(1个HaProxy + 2个NGINX + 2个PHP7-FPM)。Docker:不同端口上的多个PHP7-FPM容器
代理容器是用来直接根据网址的请求,所以如果我进入http://project1.dev
它将请求代理到使用project1-php
评估PHP的project1-nginx
。该设置与类似。
现在,我试图围绕两个PHP容器的端口来包装我的头。默认的fpm端口是9000,所以这两个PHP容器都无法运行。我假设这里要走的路是让两个容器都输出端口9000,但是让它们在主机上是9000和9001?
在撰写文件中沿着这些行的东西。
project_1_php:
ports:
- "9000:9000"
project_2_php:
ports:
- "9001:9000"
所以,一切开机罚款,项目1是工作,但项目2给了我一个502的Nginx错误日志说
2016/01/26 14:37:05 [error] 6#6: *1 connect() failed (111: Connection refused)
while connecting to upstream, client: 172.17.0.9, server: code.dev,
request: "GET/HTTP/1.1", upstream: "fastcgi://172.17.0.4:9001"
嗯..你为什么 “靶向” nginx的服务器?它没有任何意义..是你的HAProxy之间的路由器和Nginx之间或Nginx和Fpm之间? – Mjh
我不确定我是否明白您的目标是Nginx的含义?是的,代理位于路由器和nginx之间 – Esben
您正在使用2个nginx服务器,每个服务器都有一个定义'project1.dev'或'project2.dev'的'server {}'块,并且取决于它 - 它们代理它适合'php-fpm'机器。这个逻辑稍微偏离了一点,你甚至不需要HAProxy,在这种情况下它是无用的。但是,这是不合时宜的。你确定第二个'fpm'服务器允许来自'172.17.0.9'的连接吗?默认配置只允许来自本地主机的连接。 – Mjh