背景:
使用容器部署onlyoffice到linux服务器,使用内网访问速度还可以接受,但是如果放到外网路径访问起来,速度就会很慢,甚至加载失败;
优化方案:
预览的过程排除网络因素,可以发现打开的过程其实是加载了很多静态文件
每次访问都需要从容器中拿出,容器和宿主机之间的网络本身也会有限制,于是想着是把容器中的静态文件放到linux服务器的本地文件;
核心思想:将容器中的静态文件放到宿主机,调用的时候读取宿主机,而不是容器内部;
过程:
一次预览请求-〉
访问到onlyoffice容器--〉
容器准备加载font文件-〉
容器nginx转发到宿主机nginx-〉
宿主机nginx代理到本地文件
1、复制容器中的font文件
docker cp [容器]:/var/www/onlyoffice/documentserver/fonts 本地路径
2、配置宿主机的nginx,增加配置转发到本地文件,重启nginx
location /officestatic/ {
alias /home/hdfs/onlyoffice/fonts/;
autoindex on;
#允许跨越的ip,也就是onlyoffice的容器访问ip
add_header Access-Control-Allow-Origin 'ip:8088';
}
测试:http://192.168.1.166:9000/officestatic/1.txt
alias配置的是转发,还有root的写法
root是直接拼接,alias是转发,这个需要注意;
例如/opt/pic/wnd.jpg
访问地址: http://ip:9000/pic/wnd.jpg 通过nginx配置 server { listen 9000; server server_pic; location /pic { root /opt; autoindex on; } } 或者 server { listen 9000; server server_pic; location /pic { alias /opt/pic; autoindex on; } }
3、配置onlyoffice容器内的nginx转发
cd /etc/nginx/includes
vim ds-docservice.conf
location ~* /8.0.1-31/fonts(.*){
return http://ip:9000/officestatic$1?$args;
}
4、重启容器,重启nginx
docker restart 容器名
进入onlyoffice重启nginx,nginx -s reload
5、验证加载速度是否提升,重新打开一个预览,加载速度是否提升;