gpt4 book ai didi

php - 如何将 Node.js 与 PHP 一起托管

转载 作者:可可西里 更新时间:2023-11-01 11:48:38 25 4
gpt4 key购买 nike

我已经在 Linux 主机上托管了我的 PHP,现在我使用 node.js 进行实时推送通知,读取集成将由 reddis 完成。现在我的问题是在哪里托管 node.js 代码以及如何在 linux 托管中运行该代码和我的 php?

最佳答案

如果您有像 VPS 这样的东西,那么您可以自由安装任何您想要的东西。

与 node.js 一起运行 php 的典型堆栈是

  • Nginx 作为网络服务器,监听 80 端口
  • PHP-FPM作为fastcgi服务器,监听9000端口
  • 在您想要的端口上运行的 Node 应用程序,比方说端口 3000

在你的 nginx html block 中你定义了一个 php 和一个 Node 后端

upstream php_app {
server 127.0.0.1:9000;
}

upstream node_app {
server 127.0.0.1:3000;
}

在你的虚拟主机中,你将 php 文件指向到 php 后端的 fastcgi_pass

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
try_files $uri =404;
include /etc/nginx/fastcgi.conf;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php_app;
}

你可以将/node 子文件夹上的请求转发到 Node 后端:

location /node/ {
proxy_pass http://node_app;
proxy_redirect off;
}

这意味着其余的请求(对于静态文件)由 nginx 直接提供。

有几个参数可以调整您的应用程序的行为,包括 php 和 Node 后端的超时,它们独立于 nginx 超时。另外,既然你说的是推送通知,我猜你在想像 websocket 服务器(比如 socket.io)之类的东西。在这种情况下,您还需要允许客户端向 Node 后端请求协议(protocol)切换

location /node/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://node_app;
proxy_redirect off;
}

我没有使用路由来代理到 Node ,而是使用不同的子域,但这取决于您。

关于php - 如何将 Node.js 与 PHP 一起托管,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25318772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com