如何选择首选文件传输方法?

我有一个问题,我认为是我的 prosody 配置问题。当我发送文件(例如照片)超过 ~2 或 3 兆字节(我通过实验确定)时,使用 Conversations 2.* 版本(android IM 应用程序)时,它使用点对点连接传输此文件,而不是将此文件上传到服务器并将链接发送给我的对话者。小文件使用 http 上传传输效果良好。我找不到这种行为的原因。 以下是我从官方文档中获取的用于 http_upload 模块的一些行(在其中我没有找到关闭点对点文件传输的设置):

http_upload_file_size_limit = 536870912 -- 512 MB in bytes
http_upload_expire_after = 604800 -- 60 * 60 * 24 * 7
http_upload_quota = 10737418240 -- 10 GB
http_upload_path = "/var/lib/prosody"

这是我的全面配置: https://pastebin.com/V6DNYrhe

点赞
用户6583790
用户6583790

小文件使用 http 上传的效果很好。我找不到这种行为的原因。

TL;DR:你把选项放错了地方。默认的 1MB 限制适用。这被告知给客户端,以便他们知道并可以使用更有效的 P2P 传输方法来传输非常大的文件。

http_upload_path = "/var/lib/prosody"

这一行使 Prosody 的数据目录变成公共的,让任何人都可以轻松访问所有用户数据。你绝不想这么做。你很幸运没有把它放到正确的部分。

而这是我的完整配置:https://pastebin.com/V6DNYrhe

"http_upload" 在全局的 modules_enabled 列表中,这将在所有虚拟主机上加载它。

你在配置文件的末尾添加了选项,将它们放在了组件部分下。这使得这些选项仅适用于该组件。

因此,加载 mod_http_upload 的 VirtualHost 没有设置选项,将使用默认值。

http_upload_file_size_limit = 536870912 -- 512 MB in bytes

不要这么做。Prosody 内置的 HTTP 服务器并未针对非常大的上传进行优化。HTTP 请求大小有一个安全限制,将 HTTP 上传大小限制为 10M,以防止 DoS 攻击。

虽然该限制可以更改,但我强烈建议您查看 https://modules.prosody.im/mod_http_upload_external.html

2018-09-24 18:02:00