[英]Nginx + PHP-FPM: Connection refused on port 5000 of PHP-FPM container while port 9000 is no problem
我正在 Docker 中訓練自己,我正在嘗試設置一個 Nginx + PHP FPM 環境,我最終想在 ECS 上托管(僅用於培訓目的)。 PHP 環境有一個基本的 Symfony 4 服務正在運行(只是返回一個 json,沒什么特別的)。 然而,問題在於我的 Nginx 容器。 Something really strange happens as I have exposed the port 5000 on the PHP container in my Dockerfile for it but my Nginx container is giving me bad gateway errors when trying to access the PHP container at this port. 如果我將 Nginx 容器用於 fastcgi_pass 的端口更改為 9000,同時不更改 PHP 容器的暴露端口(在 Dockerfile 中將其保留為 5000),一切都很好,設置正常。 有沒有人可以給我一些提示,為什么會這樣?
我檢查了docker ps
以檢查端口,實際上 PHP 容器上的端口 5000 和 9000 都打開了,但似乎只有端口 9000 可用。
Nginx 配置文件
server {
listen 80;
server_name localhost;
root /var/www/symfony/public;
index index.php;
access_log /var/log/access.log;
error_log /var/log/error.log;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param HTTPS off;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass symfony:9000;
fastcgi_index index.php;
}
}
Symfony dockerfile(縮短)
FROM php:7.2-fpm
WORKDIR /var/www/symfony
... (installation things)
COPY . /var/www/symfony
EXPOSE 5000
Docker-compose
version: "3.7"
services:
symfony:
container_name: symfony
build: ./symfony
volumes:
- ./symfony:/var/www/symfony
- ./logs/symfony:/var/www/symfony/var/logs
networks:
- api
nginx:
container_name: nginx
build: ./nginx
ports:
- 80:80
volumes:
- ./symfony:/var/www/symfony
- ./logs/nginx:/var/log/nginx
networks:
- api
depends_on:
- symfony
volumes:
symfony:
networks:
api:
driver: "bridge"
Docker ps 結果
PORTS NAMES
0.0.0.0:80->80/tcp nginx
5000/tcp, 9000/tcp symfony
我希望能夠將 symfony:9000 更改為 symfony:5000 並能夠從 PHP 容器中獲得結果。
很高興見到你
在官方 docker php 映像中,有 /usr/local/etc/php-fpm.d/zz-docker.conf... 很快 zz-docker.conf 配置文件將 'listen="what you want"' 更改為 '聽= 9000'。 因此,您需要更改(或刪除)zz-docker.conf。
相關評論: https://github.com/docker-library/php/issues/241
希望解決您的問題。 謝謝你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.