本文编写于 564 天前,最后修改于 559 天前,其中某些信息可能已经过时。

一般的,我会将Emby开放到公网,并且为了美观以及和现有环境并存,会选择将Emby通过反向代理来使用。
但这时,你可能会发现一个问题,网页端播放一个视频真的是慢到吐血,但是客户端却很快,这是为什么?

客户端在请求服务器时会顺带获取一下你在Emby中的网络设置,这样你会发现在内网中连接Emby是直接走内网IP。
如此,客户端连接到Emby服务器时便是直接与Emby服务器交互而不经过反向代理。
​‌‌‌​‌​​​​​‌‌​‌​‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​​‌‌​​​‌​​‌‌​‌​‍​‌‌‌‌‌‌​​​​‌​‌​‌‍‌​‌​‌​‌‌‍‌​​‌​‌‌​‍‌​​‌​​‌​‍‌​​‌‌​‌​‍‌​‌‌‌‌​‌‍‌​​‌​​‌‌‍‌​​‌​​​​‍‌​​‌‌​​​‍​​‌‌​‌​​​​​‌​​‌‍​‌​‌‌‌​‌​‌‌​‌‌​‍​‌‌‌​​​​‌​​​‌​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍​‌‌‌​‌​​​‌​‌​‌‌​‍​‌‌​​​​‌​​‌‌‌‌‌‍​​​‌​​‌​‌‌‌‌​‌‌‍‌​‌‌‌​‌​‍‌​​‌​​‌​‍‌​​‌‌‌​‌‍‌​​​​‌‌​‍​‌‌‌​‌​​​‌​​​​​​‍​‌‌​‌​‌​​​​‌​​​‌‍​​‌‌​​‌​​​​‌​‌‌‍​​​‌​‌​‌​‌‌‌​‌​‍​‌​​​​​​​​‌​‌​​‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​​‌​​​​‍‌​​​‌​‌​‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​‌​‌‌​‍‌​​‌​​‌​‍‌​​‌‌​‌​‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌​‌​‍‌‌​‌​​‌​‍‌‌​​‌‌‌​‍‌‌​​‌​​​‍​​‌‌‌​‌‌​‌‌‌‌‌‌‍​‌​‌‌‌​​‌‌​​‌‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌​​​‌‌​​‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​‌​‌‌​‍‌​​‌​​‌​‍‌​​​‌‌​‌‍‌​​‌‌‌​‌‍‌​​​‌‌‌​‍‌‌​‌​​​‌‍‌​​‌‌‌​​‍‌​​‌​​​‌‍‌​‌​​​‌‌‍‌​​‌‌​‌​‍‌​​​​‌‌‌‍‌​​​‌‌‌‌‍‌​‌​​​‌‌‍‌​​‌‌​​‌‍‌​​‌‌‌‌​‍‌​​​‌‌​​‍‌​​​‌​‌‌‍‌​​‌‌​‌​‍‌​​​‌‌​‌‍‌​‌​​​​​‍‌​​‌‌​‌​‍‌​​‌​​‌​‍‌​​‌‌‌​‌‍‌​​​​‌‌​‍‌‌​‌​​​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​‌​​‌‌

如果我们通过反向代理想在外网观看视频,那么这个视频流将会先被反向代理服务器获取,有的可能还有缓存策略...
这样你的视频流要经过中转,不仅耗费处理资源还有存储资源,更重要的是你的视频播放效率可能低了一倍不止。

先决条件

  • 你是使用Nginx或任意有反向代理功能的程序进行反代Emby

本文将以Nginx作为示范,在公网上部署一个HTTPS访问的Emby。

获取pfx格式的证书

如果你是已有证书,仅需使用OpenSSL工具转换:
openssl pkcs12 -export -out emby.pfx -inkey 证书密钥 -in 证书 -certfile 根证书
然后OpenSSL会要求你使用一个密码以保护该证书。

你也可以重新申请证书,这里我在腾讯云上申请了一张亚洲诚信的证书。


其中IIS目录内就直接有我们需要的fpx格式
其中keystorePass.txt的内容是证书密码。

在Emby后台配置SSL

在你的Emby控制台->网络 部分


然后把刚刚的信息填入,保存,重启Emby服务端
尝试访问 https://Emby域名:刚刚设置的端口
如正常访问即配置成功。

添加伪静态

你只需要复制粘贴:

location ~* /Images/(.*)+
{
rewrite ^/(.*)$ https://$host:8099/$1 permanent;
}
location /emby/Videos
{
rewrite ^/(.*)$ https://$host:8099/$1 permanent;
}
location /emby/Audio
{
rewrite ^/(.*)$ https://$host:8099/$1 permanent;
}

然后把8920替换成你刚刚设置的端口即可。
不要粗暴的替换掉/emby下的内容,因为有很多关键api还是需要和访问域名搭配认证的。

后续

你还可以顺带为你的Emby的反向代理开启缓存,有了上面的配置就不会导致更新图片后还未刷新的问题了。
至于播放视频的体验,试试吧~
舒服。