配置nginx容器和php容器协同工作成功,使用ip加端口的方式进行通信

简介: 本示例演示如何通过Docker挂载同一宿主目录至Nginx与PHP容器,实现PHP项目运行环境配置。需注意PHP容器中监听地址修改为0.0.0.0:9000,并调整Nginx配置中fastcgi_pass指向正确的IP与端口。同时确保Nginx容器中/var/www/html权限正确,以避免访问问题。

因为两个容器需要同时挂载宿主上的/var/www/html目录
docker run -d -v /var/www/html/:/var/www/html --name cphp -p 9000:9000 image_php_01
docker run -d -v /var/www/html/:/var/www/html --name cnginx -p 6001:80 image_nginx

nginx容器中的配置内容如下
\etc\nginx\sites-available\default
server {
listen 80; # 监听80端口
server_name localhost; # 可替换为实际域名

# 网站根目录(需与PHP容器中文件路径一致,建议通过卷共享)
root /var/www/html;
index index.php index.html index.htm;

# 处理静态文件(Nginx直接返回)
location / {
    try_files $uri $uri/ =404;
}

# 处理PHP文件(转发到PHP-FPM)
location ~ \.php$ {
    # 转发到PHP容器的PHP-FPM(IP:端口)要确保正确,实验测试过程中踩坑了
    fastcgi_pass 172.17.0.3:9000;
    fastcgi_index index.php;
    # 关键:PHP脚本在容器中的绝对路径(必须与PHP容器中路径一致)
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;  # 引入默认FastCGI参数
}

}

wechat_2025-08-13_233404_130.png
测试的时候我是从cat /var/log/nginx/error.log知道我php容器ip地址填错了的

php容器中的listen需要修改

原设置是:(测试过程中一直想用#进行注销,结果容器无法正常启动,正确的做法是要在行头加入;号)
listen = /run/php/php7.4-fpm.sock

需要改成:
listen = 0.0.0.0:9000

另外需要在nginx容器中修改/var/www/html路径的权限:
chown -R www-data:www-data /var/www/html
root@4f931fcb7db9:/# chmod -R 755 /var/www/html

相关文章
|
缓存 Kubernetes Docker
容器服务ACK常见问题之容器服务ACK ingress websocket配置失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
2月前
|
域名解析 网络协议 API
【Azure Container App】配置容器应用的缩放规则 Managed Identity 连接中国区 Azure Service Bus 问题
本文介绍了在 Azure Container Apps 中配置基于自定义 Azure Service Bus 的自动缩放规则时,因未指定云环境导致的域名解析错误问题。解决方案是在扩展规则中添加 `cloud=AzureChinaCloud` 参数,以适配中国区 Azure 环境。内容涵盖问题描述、原因分析、解决方法及配置示例,适用于使用 KEDA 实现事件驱动自动缩放的场景。
|
存储 安全 Linux
Podman入门全指南:安装、配置与运行容器
Podman入门全指南:安装、配置与运行容器
7095 1
|
9月前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
215 6
|
9月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
357 5
|
10月前
|
Kubernetes 监控 Java
如何在Kubernetes中配置镜像和容器的定期垃圾回收
如何在Kubernetes中配置镜像和容器的定期垃圾回收
|
JSON JavaScript 开发者
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
【8月更文挑战第7天】Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
|
弹性计算 Kubernetes 开发者
利用容器化服务实现游戏服务器的动态资源配置
【8月更文第12天】在游戏行业中,用户基数的变化往往呈现出明显的波动性,特别是在推广活动期间,用户基数会显著增加,而在非推广期则会有所下降。为了应对这种变化,游戏开发者需要一种能够根据用户基数动态调整服务器资源的解决方案,以确保用户体验的同时最大限度地节省成本。容器化服务因其灵活的资源管理和成本控制能力,成为了理想的解决方案。
193 2
|
安全 网络协议 云计算
Docker容器网络配置详解
【7月更文挑战第16天】Docker的网络配置是实现容器间以及容器与外部网络通信的基础。通过选择合适的网络模式和配置选项,可以构建高效、安全、可扩展的Docker网络解决方案。
1468 3
|
Linux 开发工具 数据库
【REP】hrms-ERPNext 容器安装配置
【REP】hrms-ERPNext 容器安装配置