宝塔PHP8.4与Node.js共存_多环境并行使用PHP8.4技巧【方法】
发布时间 - 2026-01-10 00:00:00 点击率:次PHP 8.4与Node.js可在宝塔面板中通过反向代理、独立端口、FPM多池隔离或Docker容器化四种方式共存,实现端口协调与环境隔离,互不干扰。
如果您在宝塔面板中已安装PHP 8.4,但同时需要运行Node.js应用(如Vue项目服务端、Express后端或Nuxt SSR),且不希望两者端口冲突或进程干扰,则需通过环境隔离与端口协调实现共存。以下是实现PHP 8.4与Node.js多环境并行使用的多种方法:
一、反向代理分离访问入口
该方法利用Nginx反向代理能力,将不同域名或路径请求分别转发至PHP 8.4的FastCGI服务与Node.js监听端口,实现逻辑隔离与统一入口。无需修改应用代码,兼容性高。
1、在宝塔面板【网站】中添加一个新站点,绑定主域名(如example.com)。
2、进入该站点的【配置文件】,在server块内location /段落下方插入以下Node.js代理规则:
location /api-node/ {
proxy_pass http://127.0.0.1:3000/;
proxy_set_header H
ost $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
3、确保Node.js应用已启动并监听127.0.0.1:3000(不可绑定0.0.0.0或公网IP)。
4、保存配置后重启Nginx,访问example.com/api-node/即可路由至Node.js服务,其余路径默认交由PHP 8.4处理。
二、独立端口+防火墙放行
此方法为Node.js分配独立公网可访问端口(如3001),绕过Nginx统一入口,适用于需直接暴露Node.js服务的场景;PHP 8.4仍通过80/443端口提供Web服务,二者物理隔离。
1、编辑Node.js启动脚本,将app.listen()参数明确指定为3001,例如:app.listen(3001, '127.0.0.1')。
2、在宝塔面板【安全】页面中,放行端口3001(TCP协议),确保系统防火墙允许该端口通信。
3、使用pm2管理Node.js进程:执行pm2 start app.js --name "node-api",并运行pm2 save持久化。
4、验证访问:在浏览器中直接输入服务器IP加端口(如http://192.168.1.100:3001/health)确认Node.js响应正常。
三、PHP-FPM多池隔离+Node.js进程用户分离
通过为PHP 8.4创建独立FPM池,并限定其运行用户与Node.js进程用户不同,避免文件权限冲突与资源争抢,提升多环境稳定性与安全性。
1、进入宝塔面板【软件商店】→【PHP 8.4】→【设置】→【配置修改】,在末尾新增自定义FPM池配置段:
[www-node]
listen = /www/wwwroot/example.com/runtime/php-node.sock
listen.owner = www
listen.group = www
user = phpnode
group = phpnode
2、执行命令创建专用系统用户:useradd -r -s /sbin/nologin phpnode。
3、重启PHP 8.4服务,在对应网站根目录的.htaccess或Nginx配置中,将fastcgi_pass指向新sock路径:fastcgi_pass unix:/www/wwwroot/example.com/runtime/php-node.sock;
4、Node.js进程使用普通用户(如www)启动,确保与phpnode用户无重叠,防止/tmp或session目录写入冲突。
四、Docker容器化隔离运行
借助Docker将Node.js应用封装为独立容器,与宝塔宿主机上的PHP 8.4完全解耦;容器通过bridge网络与宿主机Nginx通信,互不侵入系统环境。
1、在服务器安装Docker与docker-compose,执行systemctl enable docker && systemctl start docker。
2、在项目根目录新建docker-compose.yml,内容包含Node.js服务与network配置:
version: '3'
services:
node-app:
image: node:18-alpine
working_dir: /app
volumes:
- ./src:/app
command: npm start
ports:
- "3002:3000"
restart: always
3、执行docker-compose up -d启动容器,确认容器内服务监听3000端口,映射宿主机3002端口。
4、在宝塔Nginx配置中添加反向代理,将location /node-docker/指向http://127.0.0.1:3002/。
# php
# vue
# js
# node.js
# node
# docker
# php8
# 宝塔面板
# nginx
# npm
# 防火墙
# 浏览器
# express
# for
# 封装
# Session
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
Laravel如何处理和验证JSON类型的数据库字段
html如何与html链接_实现多个HTML页面互相链接【互相】
利用JavaScript实现拖拽改变元素大小
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何将凡科建站内容保存为本地文件?
如何批量查询域名的建站时间记录?
Laravel集合Collection怎么用_Laravel集合常用函数详解
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
如何用AI帮你把自己的生活经历写成一个有趣的故事?
如何实现建站之星域名转发设置?
JS中对数组元素进行增删改移的方法总结
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
如何快速搭建高效简练网站?
高防服务器租用首荐平台,企业级优惠套餐快速部署
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
如何用西部建站助手快速创建专业网站?
如何利用DOS批处理实现定时关机操作详解
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
Laravel如何使用Service Container和依赖注入?(代码示例)
在线教育网站制作平台,山西立德教育官网?
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
Android中AutoCompleteTextView自动提示
如何在香港服务器上快速搭建免备案网站?
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
高性能网站服务器部署指南:稳定运行与安全配置优化方案
活动邀请函制作网站有哪些,活动邀请函文案?
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
Swift中循环语句中的转移语句 break 和 continue
高防服务器:AI智能防御DDoS攻击与数据安全保障
如何有效防御Web建站篡改攻击?
Laravel如何实现用户注册和登录?(Auth脚手架指南)
原生JS实现图片轮播切换效果
如何在建站之星网店版论坛获取技术支持?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
如何在万网开始建站?分步指南解析
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
如何基于云服务器快速搭建网站及云盘系统?
制作旅游网站html,怎样注册旅游网站?
Python正则表达式进阶教程_复杂匹配与分组替换解析
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】

