我用 C++ 编写了一个高性能 HTTP 事件服务器,我想让它与 nginx 和 PHP-FPM (fastcgi) 完美结合。这是我的 nginx 配置的片段。
location ~ \.eve$ {
gzip off;
proxy_redirect off;
proxy_buffering off;
proxy_pass http://127.0.0.1:9001;
proxy_intercept_errors on;
error_page 505 = @fallback // this is actually BACKEND.php
}
如果有事件,我的事件服务器会返回 505 错误,否则它会挂起,并最终返回我用 JS 处理的“NO STATE CHANGE”指令或你有什么(这基本上是彗星)。关键是我希望 nginx 捕获 505 错误并将该请求转发给 PHP,以便 PHP 可以相应地处理该事件。我的服务器基本上只是一个事件中心,允许许多用户能够连接并查看是否有任何新事件。如果有事件,PHP 会处理事件分发,包括权限和其他易变的东西。
问题是 nginx 没有将传递给 *.eve 的 POST(或 GET)变量传递给 BACKEND.php。现在我认为这是设计使然(由于 error_page 指令),但我认为必须有某种方法使其工作。我的服务器在 9001 上运行,PHP-FPM 在 9000 上运行。有什么想法吗?