在宿主机Nginx中代理Docker容器内的PHP-FPM程序

在宿主机nginx中代理docker容器内的php-fpm程序

本文详细介绍了如何在宿主机上运行的Nginx服务器中,高效代理Docker容器内部署的PHP-FPM应用程序。教程涵盖了PHP-FPM容器的启动配置、Nginx FastCGI代理的核心设置,并提供了详细的Nginx配置示例,旨在帮助开发者实现Nginx与Docker化PHP服务的无缝集成,确保生产环境的稳定运行。

引言

将PHP-FPM应用程序部署在Docker容器中已成为现代Web开发中的常见实践,它提供了环境隔离和部署便捷性。然而,在某些场景下,例如为了利用宿主机Nginx的现有配置、性能优势或集成特定模块,我们可能选择在宿主机上独立运行Nginx作为Web服务器和反向代理,而非将其也容器化。本文将深入探讨如何配置宿主机上的Nginx,以实现对Docker容器内部PHP-FPM服务的高效代理。

核心工作原理

Nginx与PHP-FPM之间的通信基于FastCGI协议。当Nginx接收到对PHP文件的请求时,它会通过FastCGI协议将请求转发给PHP-FPM进程。PHP-FPM处理完请求后,将生成的动态内容返回给Nginx,Nginx再将最终的HTTP响应发送给客户端。在Docker环境中,核心挑战在于Nginx如何通过宿主机网络连接到运行在隔离容器内部的PHP-FPM服务。这通常通过Docker的端口映射机制来实现。

步骤一:准备PHP-FPM Docker容器

首先,需要确保PHP-FPM容器正确运行,并且其FastCGI端口(默认为9000)已映射到宿主机。

1. 启动PHP-FPM容器

立即学习“PHP免费学习笔记(深入)”;

以下示例使用Bitnami的php-fpm镜像,你也可以替换为其他PHP-FPM镜像或自定义镜像。关键在于通过-p参数将容器的9000端口映射到宿主机的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

-d: 使容器在后台运行。–name my-php-fpm-app: 为容器指定一个易于识别的名称。-p 9000:9000: 这是核心配置,它将容器内部的9000端口(PHP-FPM监听的端口)映射到宿主机的9000端口。Nginx将通过此宿主机端口与PHP-FPM通信。-v /path/on/host/to/your/php/app:/app: 将宿主机上包含PHP应用程序代码的目录挂载到容器内部的/app目录。确保此宿主机路径与Nginx配置中的root指令保持一致。

2. 验证PHP-FPM服务状态

容器启动后,可以通过以下命令检查其运行状态:

docker ps -a

若要进一步确认PHP-FPM服务是否可达,可以在宿主机上尝试连接映射的端口:

nc -vz 127.0.0.1 9000

如果连接成功(通常显示succeeded!),则表示PHP-FPM服务已在宿主机9000端口上可用。

步骤二:配置宿主机Nginx进行代理

接下来,在宿主机上的Nginx配置文件中添加一个server块,以定义如何代理对PHP应用程序的请求。

1. Nginx配置示例

在Nginx的配置目录(例如/etc/nginx/sites-available/或/etc/nginx/conf.d/)中创建一个新的配置文件,例如my_php_app.conf。

server {    listen 80; # Nginx监听HTTP请求的端口    server_name your_domain.com www.your_domain.com; # 你的域名,或使用localhost进行本地测试    root /path/on/host/to/your/php/app; # 宿主机上PHP代码的根目录,必须与Docker挂载的宿主机路径一致    index index.php index.html index.htm; # 默认索引文件    error_log /var/log/nginx/my_php_app.error.log; # 错误日志路径    access_log /var/log/nginx/my_php_app.access.log; # 访问日志路径    # 处理所有非PHP文件的请求,尝试直接提供文件,否则重写到index.php    location / {        try_files $uri $uri/ /index.php?$query_string;    }    # 处理所有以.php结尾的请求    location ~ .php$ {        # 重要的安全措施:确保只有实际存在的PHP文件才会被发送到PHP-FPM处理        try_files $uri =404;        # 将FastCGI请求转发给PHP-FPM服务        # 使用宿主机的loopback地址和映射的端口        fastcgi_pass 127.0.0.1:9000;        # FastCGI参数配置        fastcgi_split_path_info ^(.+.php)(/.+)$; # 分割PHP脚本路径和额外路径信息        include fastcgi_params; # 引入Nginx默认的FastCGI参数集        # 重新定义SCRIPT_FILENAME,确保PHP-FPM能正确找到并执行脚本        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;        fastcgi_param HTTPS off; # 根据实际情况设置HTTPS状态        # fastcgi_param PATH_INFO $fastcgi_path_info; # 如果应用程序需要PATH_INFO,可启用此行    }    # 阻止对隐藏文件和目录的访问    location ~ /. {        deny all;    }}

配置详解:

listen 80;: Nginx监听HTTP默认端口。server_name your_domain.com;: 定义此虚拟主机的域名。root /path/on/host/to/your/php/app;: 至关重要! 此路径必须与你在docker run命令中挂载到PHP-FPM容器的宿主机路径完全一致。Nginx将在此目录中查找静态文件和PHP脚本。location / { … }: 定义了如何处理非PHP文件的请求。try_files指令会尝试按顺序查找文件,如果找不到,则将请求内部重写到index.php,以便PHP应用程序处理路由。location ~ .php$ { … }: 这是处理所有以.php结尾的请求的核心块。try_files $uri =404;: 确保只有真实存在的PHP文件才会被发送到PHP-FPM,防止不必要的处理和潜在的安全问题。fastcgi_pass 127.0.0.1:9000;: 核心代理指令。它指示Nginx将FastCGI请求发送到宿主机上的9000端口。由于我们已将Docker容器的9000端口映射到宿主机的9000端口,Nginx就能通过此地址访问到PHP-FPM服务。注意: 在某些特殊的Docker网络配置或Docker Desktop环境中(例如,Docker Desktop在macOS/Windows上使用虚拟机),宿主机的IP可能不是127.0.0.1,而是Docker分配给宿主机VM的网桥IP(例如192.168.59.103或172.17.0.1)。如果`127.0.0.1:9000

以上就是在宿主机Nginx中代理Docker容器内的PHP-FPM程序的详细内容,更多请关注php中文网其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1294185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月11日 10:01:31
下一篇 2025年12月11日 10:01:43

相关推荐

  • 稳定币在哪个交易所买最好

    稳定币购买首选全球知名大型中心化交易所,因其安全性高、流动性强、支持币种多,适合新手和多数用户;注重资产控制的可选去中心化交易所,但需承担更高操作责任。 稳定币在哪个交易所买最好 关于“稳定币在哪个交易所买最好”这个问题,并没有一个适合所有人的唯一答案。最好的选择取决于您的个人需求,主要考量因素包括…

    2025年12月11日
    000
  • 币圈哪个交易所分仓功能最好用?

    AiCoin在分仓功能中表现最佳,支持七大交易所、无限制API授权、3秒同步多账户、军事级加密且完全免费,适合多账户管理和风险分散,尤其适合跨平台用户;而CoinP币朋、Bibox等原生分仓方案在特定场景下也有优势,但灵活性和跨平台支持较弱。 币圈分仓功能评测:哪家交易所最强? 在加密货币交易中,分…

    2025年12月11日
    000
  • Mango Network(MGO币)是什么?MGO未来发展及价格预测

    目录 什么是 Mango Network(MGO 代币)?技术优势(一)卓越性能(二)安全可靠Mango Network 主要特点1. 多虚拟机并行执行架构2. 高级跨链通信3. 高性能共识机制4. 通过 Move 语言增强安全性5. 模块化区块链设计Mango Network 如何运作MGO代币经…

    2025年12月11日
    000
  • Cronos(CRO币)是什么?是一个好投资吗?CRO币未来价格预测

    目录 什么是 Cronos(CRO)有多少个 CROCRO币主要功能CRO 与Solana对比CRO背后的技术团队与起源重要新闻与事件CRO 是一项好的投资吗CRO币长期价格预测CRO 2025 年价格预测CRO 2026-2031 年价格预测CRO 2031-2036 年价格预测常见问题解答 cr…

    2025年12月11日
    000
  • 解读比特币(BTC)无视新“OG”巨鲸抛售,价格升至113,000美元

    目录 要点:巨鲸抛售未撼动比特币涨势交易员警示:BTC面临“双顶”形态风险 ‍ 尽管面临新的价格回调威胁,比特币多头仍坚定看涨,目标重返113,000美元上方——但资深交易员彼得·布兰特指出,前路仍有挑战。 要点: 尽管出现巨鲸实体抛售BTC,比特币日内仍上涨1.6%,市场情绪持续看涨。分析显示,当…

    2025年12月11日 好文分享
    000
  • 比特币价格预测:2.19 亿美元资金涌入比特币 ETF!机构悄然备战冲刺100万美元

    加密市场迎来关键转折,机构资金动向再度成为焦点。最新数据显示,在经历此前数周的净赎回与市场震荡后,投资者情绪出现回暖迹象。周一,比特币ETF单日录得2.19亿美元资金流入,同期以太坊ETF流入达4.44亿美元,合计吸引6.63亿美元资金回流,显示出机构正在重新布局。 以太坊ETF呈现复苏态势,连续三…

    2025年12月11日
    000
  • 什么是Sapien(SAPIEN币)?SAPIEN未来展望及价格预测

    目录 什么是Sapien (SAPIEN)?为什么最近应该关注Sapien?Sapien概览主要特点:Sapien项目背景Sapien如何运作?Sapien的融资信息Sapien的代币经济学SAPIEN空投指南SAPIEN 未来展望Sapien价格预测Sapien 2025 年价格预测Sapien …

    2025年12月11日
    000
  • 什么是双顶形态?如何识别?双顶形态的交易策略详解

    什么是双顶形态? 双顶形态是一种技术分析中的看跌反转信号,通常出现在一段上涨趋势的末端。顾名思义,该形态由两个相近的高点构成,中间夹着一个回调低点,整体图形类似字母“M”。当价格在第一次冲高后回落,随后再次反弹至前高附近但未能突破,并最终向下突破关键支撑位时,双顶形态得以确认。这表明市场买方力量衰竭…

    2025年12月11日
    000
  • 虚拟币交易所币安好还是欧易好

    币安和欧易均为顶级虚拟币交易所,选择取决于用户需求:币安适合追求“大而全”生态、多样化资产和高流动性的用户;欧易则在衍生品交易、移动端体验及Web3整合方面更具优势,更适合专业交易者和新手用户。 虚拟币交易所币安好还是欧易好 选择虚拟币交易平台时,币安(Binance)和欧易(OKX)是两个无法绕开…

    2025年12月11日
    000
  • 稳定币市场总市值突破 2,804亿美元再创新高

    近期,稳定币市场总市值再创新高,突破2,804亿美元,显示出投资者对数字货币避险属性的持续关注。随着全球加密市场波动加剧,稳定币作为价值锚定资产,成为资金避风港的重要工具。 稳定币市场现状分析 稳定币的总市值增长主要受到USDT、USDC等主流稳定币的推动。市场数据显示,这些稳定币在交易所的流动性持…

    2025年12月11日
    000
  • 山寨币是什么?有哪些值得买入的山寨币?2025年9月值得关注的山寨币分析

    “山寨币”一词源于英文“Altcoin”,是“alternative coin”的缩写,泛指除比特币(BTC)之外的所有加密数字资产。它们诞生于比特币的开源代码之上,或是为了改进比特币的某些特性,或是为了实现全新的功能与应用场景。 这个庞大的生态系统包含了数以万计的项目,从技术驱动的公链平台到社区驱…

    2025年12月11日
    000
  • 区块链预言机网络:构建可信生态

    区块链预言机网络是连接链上智能合约与链下数据的关键桥梁,通过去中心化机制提供可靠外部信息,解决智能合约无法访问现实世界数据的瓶颈,广泛应用于DeFi、保险、供应链等领域,其核心在于保障数据的安全、准确与去信任化传输。 在数字经济浪潮中,区块链技术正以其颠覆性的潜力重塑着各行各业。然而,区块链世界与现…

    2025年12月11日
    000
  • Fantom (FTM币) 是什么?怎么买?FTM价格预测2025-2030年

    目录 什么是Fantom?Fantom (FTM) 代币经济学项目概述Fantom (FTM)的主要特点:1. Lachesis协议:2. DeFi生态系统:3. 合作伙伴关系:4. 可扩展性和成本效益:代币经济学:市场地位:FTM技术分析近期价格走势:支撑位和阻力位关键支撑位:主要阻力位:下一阻力…

    2025年12月11日 好文分享
    000
  • Numeraire(NMR币)是什么?怎么样?NMR价格预测2025-2036

    目录 什么是Numeraire?什么是 Numeraire (NMR)?华尔街遇见加密人工智能:摩根大通投资 NumeraiNMR 大规模 24 小时集 会社区和分析师对 NMR 的看法NMR价格趋势分析NMR长期价格预测Numeraire 2025 年价格预测Numeraire 2026-2031…

    2025年12月11日
    000
  • 币安APP手机安卓版官方下载安装教程(附币安APP官方下载地址)

    币安(Binance)作为全球知名的数字资产综合服务平台,为用户提供了安全、稳定、便捷的交易体验。通过其官方APP,用户可以随时随地管理数字资产、查看实时行情并进行交易。本文旨在为安卓用户提供币安APP的官方下载安装教程,点击本文中提供的官方下载链接,即可获取最新版本的官方应用程序,开启您的数字资产…

    2025年12月11日
    000
  • 怎么建立自己的加密货币交易策略?

    先明确自身交易类型,再结合技术与基本面分析制定规则。从确定交易风格、选择分析工具,到设定入场出场信号与仓位管理,最后通过回测和模拟持续优化,构建可执行、可重复的个性化交易策略,实现风险可控的长期盈利。 怎么建立自己的加密货币交易策略? 嘿,朋友!想在波动的数字资产市场里站稳脚跟,光靠感觉和运气可不行…

    2025年12月11日
    000
  • Numeraire(NMR币)是什么?是一项好的投资吗?NMR币投资价值、代币经济学及未来展望

    目录 关键要点Numeraire(NMR)概览什么是Numeraire?有多少个数值(NMR)?Numeraire(NMR)有什么作用?Numeraire(NMR)与比特币Numeraire(NMR)背后的技术团队与起源重要新闻与事件Numeraire(NMR)是一项好的投资吗?常见问题解答 关键要…

    2025年12月11日
    000
  • 爆仓是什么意思 爆仓是指什么

    爆仓是杠杆交易中因保证金低于维持水平被强制平仓的过程。交易所通过初始与维持保证金规则管理风险,当账户权益跌破阈值,系统自动触发清算,接管并平仓头寸。为应对此风险,交易所设立风险保障基金以覆盖穿仓损失,并采用标记价格防止单一价格操纵导致误爆仓,确保市场公平稳定。 爆仓,通常指在带有杠杆的金融交易中,投…

    2025年12月11日
    000
  • Layer 3 探索:区块链未来的新层级

    Layer 3是为解决区块链可扩展性、跨链互操作性和应用定制化需求而提出的新型架构,建立在Layer 1和Layer 2基础上,旨在通过专用Rollups、多层聚合结构或互操作协议实现高性能、低成本及去中心化优势,为DApp提供更优运行环境,推动游戏、DeFi、元宇宙等场景发展,同时与传统云计算在信…

    2025年12月11日
    000
  • 比特币常见骗局与防范措施

    答案是选择正规平台、保管私密信息、警惕高收益诱惑。具体包括:使用知名平台,避免新小平台;不通过网络传输私钥,离线备份;开启双重认证;核实链接来源;遇骗及时联系平台、报警。 拥抱新技术,但请先系好“安全带” 随着比特币逐渐进入更多人的视野,它独特的魅力吸引了大量关注。然而,阳光之下也总有阴影,一些不法…

    2025年12月11日
    000

发表回复

登录后才能评论
关注微信