我在标准的PHP / Apache平台上有一个现有的Web应用程序。现在,我想要的是添加聊天功能,我希望它是实时的websocket,并且在那个范围内,我已经研究了nodejs上的socket.io。所以除了运行大型PHP应用程序的Apache之外,我还会使用socket.io运行chat的nodejs。
但我真正理解的是,我如何识别nodejs聊天代码中的用户?首先,Apache和nodejs不能在同一个端口上运行,这意味着我将在端口8080
上运行聊天,例如,在这种情况下我丢失了用户的cookie ,这意味着我现在必须要求他们再次登录这个nodejs支持的端口,如果他们想使用聊天?看起来很荒谬,但我不知道该走哪条路。
当然,我无法将整个代码移植到nodejs上。理想情况下,我希望Apache和nodejs共存。或者我只是完全误解了聊天应该如何在网络应用中发挥作用。
任何提示赞赏。
答案 0 :(得分:0)
您可以使用PHP运行Apache端口3002上的端口3001和您的节点应用程序,并将nginx配置为反向代理,使它们在端口80上都可用,例如根/
目录中的PHP应用程序和{{1中的节点应用程序目录,nginx配置如下:
/chat
使用SSL会稍微复杂一点,但不是那么多:
server {
listen 80;
server_name example.com;
location /chat {
proxy_pass http://localhost:3002;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
您的PHP和Node应用程序甚至可以在不同的服务器上运行 - 只需在nginx配置中使用它们的地址。
有关详细信息,请参阅此答案及其评论: