Podman部署Symfony时Nginx与php-fpm通信连接重置问题求助
Podman部署Nginx+PHP-FPM运行Symfony项目连接重置问题排查
核心问题原因
- 配置挂载路径错误:启动Nginx容器时,你将
~/samus/bare-data/nginx挂载到了容器的/etc/nginx/conf.d目录,但实际有效的Nginx server配置存放在~/samus/bare-data/nginx/podman-nginx-confs子目录下,导致Nginx未加载任何有效站点配置,没有对80端口的监听规则,访问时直接触发连接重置。 - 其他关联问题:
- PHP配置挂载逻辑不规范:若本地
~/samus/bare-data/php为目录,直接挂载为镜像内/usr/local/etc/php/php.ini文件会导致挂载异常,影响PHP服务配置加载。 - Symfony项目根路径配置错误:你当前Nginx配置的root为
/var/www/html,但Symfony项目的入口文件存放在项目根目录的public子目录下,后续运行Symfony时会出现404问题。 - 容器启动参数不合理:使用
-ti交互式参数启动容器,若退出启动终端会导致容器停止,后台运行应使用-d参数。 - 不需要对外映射9000端口:同一Pod内的容器共享网络命名空间,Nginx可直接通过
localhost:9000访问PHP-FPM,对外暴露9000端口存在安全风险。
- PHP配置挂载逻辑不规范:若本地
修复步骤
- 清理现有异常Pod
podman pod rm -f webservice
- 重新创建Pod,无需映射9000端口
podman pod create --name webservice -p 8080:80
- 启动PHP-FPM容器,修正配置挂载规则(若本地php为单配置文件,可直接挂载到
/usr/local/etc/php/conf.d/下的自定义配置文件,避免覆盖默认配置)
podman run -d \ --name php7 \ --pod webservice \ --volume ~/samus/bare-data/php:/usr/local/etc/php/conf.d/custom.ini:ro \ --volume ~/samus/bare-data/www:/var/www/html:rw \ docker.io/library/php:7.4-fpm-alpine
- 启动Nginx容器,修正配置挂载路径,改为实际存放server配置的子目录
podman run -d \ --name nginx \ --pod webservice \ --volume ~/samus/bare-data/nginx/podman-nginx-confs:/etc/nginx/conf.d:ro \ --volume ~/samus/bare-data/www:/var/www/html:ro \ docker.io/library/nginx:alpine
- 修正Nginx配置适配Symfony项目,将root配置修改为:
root /var/www/html/public;
- 验证Nginx配置有效性,重载配置
# 验证配置是否正确 podman exec nginx nginx -t # 重载配置 podman exec nginx nginx -s reload
验证方法
在~/samus/bare-data/www/public目录下新建info.php文件,内容为<?php phpinfo(); ?>,访问127.0.0.1:8080/info.php即可查看PHP信息,确认服务正常运行。
内容的提问来源于stack exchange,提问作者Hadock
相关产品推荐
相关产品推荐

