我已经在Linux Host中托管了我的PHP,现在我使用node.js进行实时推送通知,并且读取集成将由reddis完成。现在我的问题是在哪里托管node.js代码以及如何在Linux托管中运行我的php代码?
答案 0 :(得分:0)
如果你有类似VPS的东西,那么你可以自由安装你想要的任何东西。
与node.js一起运行php的典型堆栈是
在你的nginx html块中,你定义了一个php和一个节点后端
upstream php_app {
server 127.0.0.1:9000;
}
upstream node_app {
server 127.0.0.1:3000;
}
在你的虚拟主机中,你将php文件指向fastcgi_pass到php后端
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子文件夹上的请求转发到节点后端:
location /node/ {
proxy_pass http://node_app;
proxy_redirect off;
}
这意味着其余的请求(对于静态文件)由nginx直接提供。
有几个参数可以调整应用程序的行为,包括php和节点后端的超时,这些参数独立于nginx超时。此外,既然你说推送通知我想你在想像websocket服务器(如socket.io)。在这种情况下,您还需要允许客户端从节点后端请求协议切换
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;
}
我不是使用路由代理到节点,而是使用不同的子域,但这取决于您。