所以,我正在考虑使用nginx和nginx-http-push-module以及PHP-FPM构建一个应用程序,经过大量有趣的配置,我得到了它处理PHP页面的工作,因为它应该
但是我没有得到的是会话应该如何工作 - 我见过的nginx + NHPM的所有例子都是通过发布者 - 订阅者系统运行的,但是如果订阅者会发生什么应该不会清楚频道对用户来说是有效的。例如,可以考虑为每个用户提供具有公共频道和私人频道的聊天系统。
现在,在传统的PHP设置中,您将把cookie传递给PHP,从那里查找会话,并根据用户是否经过身份验证处理页面的其余部分,但使用PHP-FPM并且长时间轮询,它似乎不应该像那样工作。
我可以理解,如果请求是非经过身份验证的用户,您只需转发它们并显示错误消息并从客户端终止长轮询,因为它知道它无效,但是如果有效请求,您几乎需要从客户端,在PHP中进行身份验证,然后断开连接,但请求保持打开状态 - 我不确定该部分是如何工作的。
任何人都可以解释应该如何实现,如果可能的话,最好用一个例子吗?请注意我不在这里寻找HTTP基本身份验证,我需要根据MongoDB中的单独数据存储进行身份验证。
答案 0 :(得分:2)
免责声明:我无法清楚地理解您的4.段落。
据我所知,NHPM中的身份验证的主要问题是PHP应用程序获得传入连接的绝对零通知。您的设置的Comet部分是针对PHP的只写。
接下来是一个可能的解决方案,我将在接下来的几天内尝试这个。
nginx配置:
授权工作流程:
请注意,如果您的应用程序可以使用相同的登录名从同一浏览器中的多个页面访问,那么您需要为每个用户准备多个渠道。