【问题标题】:Apache Reverse Proxy - run a script firstApache 反向代理 - 首先运行脚本
【发布时间】:2010-12-25 14:09:15
【问题描述】:

我正在尝试使用 VLC 和 Apache 反向代理来交付一些视频内容。由于 VLC 可以支持 http 流,我确信它可以与 Apache 反向代理一起使用(我还没有尝试过,但我不明白为什么它不起作用)。

在让 Apache 代理 http 视频流之前,我想先运行一个脚本。 Apache 中是否有执行此操作的选项?

如果没有,有人能想出一种方法让 PHP 先做一些魔术,然后以某种方式重定向到 http 视频流,而不会让 VLC 或 Windows Media Player 客户端哭泣吗?通过这种方式,Apache 反向代理只需指向 PHP 脚本。

无论哪种方式,脚本的想法都是启动 VLC 流服务器。

谢谢

【问题讨论】:

    标签: php apache reverse-proxy vlc


    【解决方案1】:

    如果你真的想在 apache 中实现,你可以随时编写自己的模块 :)

    您也可以将mod_rewriteprg option (rewrite map) 一起使用。 你基本上有一个由外部程序处理的重写规则。 你可以在那里做任何你想做的事情(记录等)。 不要忘记设置一个rewritelock 文件,否则你会遇到奇怪的行为。

    您也可以在 php 中执行“所有操作”,然后使用 apache 模块 mod_xsendfile,您只需在 php 中传递一个包含文件系统中文件位置的标头。

    它不会透露给客户端,但会被 apache 模块捕获并由 apache 提供服务。您的 php 进程将定期终止。

    这些是我能想到的最好的开箱即用选项。

    如果这些都不起作用,因为您需要在传输期间或传输结束时捕获一些东西,您可以使用 php.ini 回显文件内容。使用正确的输出缓冲,您可以在这方面获得可接受的性能。

    或者,如果这能解决您的问题,您可以进行一些日志文件后处理。

    【讨论】:

    • 您能否向我解释一下 mod_xsendfile 如何在我的上下文中工作?我对执行顺序有点困惑。谢谢
    • 嗯,好吧,我想我明白了。如果我错了,请纠正我:用户会直接转到一个 php 页面(例如example.org/out.php?stream=123)。这个 PHP 脚本将执行我的数据库查找、日志记录,并使用 mod_xsendfile 从 VLC 服务器返回视频流。由于数据库返回每个视频流路径,因此每个视频流只需要一个 Apache 虚拟主机。听起来对吗?
    • 刚刚意识到,mod_xsendfile 可能对我的视频流不起作用,我需要将客户端发送到另一个 http 路径,而不是文件:(
    • 那么你有一个重定向。到另一个来源。然后,您将不得不处理 vlc 服务器,或者至少是安全链接,因此它们必须由可以记录它的网络服务器生成,或者使用重写锁定方法。然后可以通过您的网络服务器传递您的请求。但你会有双倍的流量。
    猜你喜欢
    • 2012-03-12
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多