2022-10-01 10:00:06
在宿主机Nginx中代理Docker容器内的PHP-FPM程序,需通过端口映射实现Nginx与容器内PHP-FPM的通信,核心步骤包括配置PHP-FPM容器端口映射和设置Nginx的FastCGI代理。
一、配置PHP-FPM容器端口映射启动容器并映射端口使用docker run命令启动PHP-FPM容器,并通过-p参数将容器内的9000端口(PHP-FPM默认监听端口)映射到宿主机的9000端口。示例命令如下:
docker run -d --name my-php-fpm-app -p 9000:9000 -v /path/on/host/to/your/php/app:/app bitnami/php-fpm:latest-p 9000:9000:将容器内9000端口映射到宿主机9000端口,使Nginx可通过宿主机IP访问容器内PHP-FPM。
-v /path/on/host/to/your/php/app:/app:将宿主机PHP代码目录挂载到容器内,确保Nginx与PHP-FPM访问同一代码路径。
验证端口连通性容器启动后,通过以下命令检查端口映射是否成功:
docker ps -a # 确认容器运行状态nc -vz 127.0.0.1 9000 # 测试宿主机9000端口是否可达若显示succeeded!,则表示PHP-FPM服务已通过端口映射暴露到宿主机。
创建Nginx配置文件在Nginx配置目录(如/etc/nginx/conf.d/)中创建新配置文件(如my_php_app.conf),并添加以下内容:
server { listen 80; server_name your_domain.com关键参数说明:
fastcgi_pass 127.0.0.1:9000:Nginx通过宿主机9000端口转发请求到容器内PHP-FPM。
root:必须与Docker挂载的宿主机路径一致,确保Nginx能正确找到PHP文件。
try_files $uri =404:防止未找到的PHP文件被发送到PHP-FPM,提升安全性。
检查并重载Nginx配置执行以下命令检查配置语法并重载Nginx:
nginx -t # 检查配置语法nginx -s reload # 重载配置通过端口映射将Docker容器内PHP-FPM的9000端口暴露到宿主机,并在Nginx中配置fastcgi_pass指向该端口,即可实现宿主机Nginx对容器内PHP-FPM的高效代理。核心要点包括端口映射一致性、路径挂载正确性及FastCGI参数配置。特殊环境下需根据实际IP调整代理地址。