我已经在Linux主机上托管了我的PHP,现在我使用node.js进行实时推送通知,阅读集成将由reddis完成。现在我的问题是在哪里托管node.js代码,以及如何运行代码与我的php在linux托管?
如果你有像VPS这样的东西,那么你可以自由地安装任何你想要的
在node.js中运行php的典型栈是- Nginx作为web服务器,监听端口80
- PHP-FPM作为fastcgi服务器,监听端口9000
- Node应用程序运行在你想要的端口,让我们说端口3000
在你的nginx html块中定义一个php和一个节点后端
upstream php_app {
server 127.0.0.1:9000;
}
upstream node_app {
server 127.0.0.1:3000;
}
在vhosts中,将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;
}
不使用路由代理到节点,我宁愿使用不同的子域,但这取决于你。