小编Chi*_*oft的帖子

在 rsync 或 afpd 中将 UTF-8 NFD 文件名转换为 UTF-8 NFC

我有一个运行 FreeNAS 8 的家庭文件服务器。几天前,我使用 rsync 从 Mac 上传我的整个 iTunes 库,以便我可以通过网络加载我的库,而不是从慢速 USB 驱动器上加载。这基本上有效,现在 iTunes 运行得更好,但我在访问任何包含非 ascii 字符的歌曲时遇到问题(我在加载 Queensrÿche 曲目时第一次注意到这个问题)。这些文件会显示在 Finder 中,但任何访问它们的尝试都会使它们消失,直到我重新连接到服务器。

经过一番研究,我发现这是因为 OSX 使用与 Linux 不同的 UTF 字符顺序。OSX 文件系统使用 Unicode Normalization Form D (NFD),而 linux 使用 Form C (NFC)。Rsync 在执行从我的 mac 到服务器的复制时不会转换这些形式,现在当 iTunes 尝试通过网络访问具有特殊字符的文件时,服务器上的文件的编码错误并且 afpd 报告它们没有存在。

解决这个问题的最佳方法是什么?是否可以在将基本库上传到服务器时让 rsync 执行 unicode 转换?我可以将 afpd 配置为以 NFD 格式传输/接收文件名吗?有没有简单的解决方案来更改服务器上的文件名?我发现了一些关于名为 convmv 的程序的内容,但我不知道是否可以在 FreeNAS 上运行它。

afp rsync mac-osx utf-8 freenas

27
推荐指数
3
解决办法
2万
查看次数

为 Socket.IO 1.0 配置 Apache 2.4 mod_proxy_wstunnel

我正在尝试配置 Apache 2.4 以使用 mod_proxy_wstunnel 将 socket.io 的 websocket 连接代理到 node.js websocket 服务器。我们在 socket.io 0.9 上运行良好,但是在 1.0 版本中,他们将套接字端点更改为查询参数,现在我无法使用正确的代理指令配置 apache。

所有到/socket.io/?EIO=N&transport=websocket(其中 N 是任意数字,通常为 2)的ws://localhost:8082/socket.io/请求都需要转发到,但所有其他请求都需要转发到http://localhost:8082/socket.io/

我已经尝试了以下两种配置的变体:

ProxyPass /socket.io/?EIO=2&transport=websocket http://localhost:8082/socket.io/?EIO=2&transport=websocket
ProxyPassReverse /socket.io/?EIO=2&transport=websocket http://localhost:8082/socket.io/?EIO=2&transport=websocket

ProxyPass /socket.io/ http://localhost:8082/socket.io/
ProxyPassReverse /socket.io/ http://localhost:8082/socket.io/
Run Code Online (Sandbox Code Playgroud)

.

RewriteRule /socket.io/?EIO=([0-9]+)&transport=websocket ws://localhost:8082/socket.io/ [QSA,P]

ProxyPass /socket.io/ http://localhost:8082/socket.io/
ProxyPassReverse /socket.io/ http://localhost:8082/socket.io/
Run Code Online (Sandbox Code Playgroud)

我从谷歌搜索中了解到 ProxyPass 和 Locations 无法定位查询字符串,那么这里还有其他选择吗?路径被硬编码到 socket.io 中,所以如果没有分叉整个库,我无法更改它们。

reverse-proxy socket node.js apache-2.4

17
推荐指数
1
解决办法
4万
查看次数

标签 统计

afp ×1

apache-2.4 ×1

freenas ×1

mac-osx ×1

node.js ×1

reverse-proxy ×1

rsync ×1

socket ×1

utf-8 ×1