问题场景
公司需要把历史报告在PC端在线预览,之前一直用embed标签解决,效果很好。产品提出在手机端(微信链接或者手机浏览器)也要在线预览,尴尬的是安卓端提示的是下载,IOS端只能看不能滑动。经一番调研采用pdf.js完美解决,参考手机端与PC端在线预览PDF。测试环境完美展示,正式部署提示pdf文件损坏或者缺失。。。,懵逼啊 没有buffer啊,排除开发原因,找来运维一顿商量。
正式环境
nginx+tomcat8
测试环境
tomcat8
分析
pdf.js插件提示文件损坏或者缺失,查看了下文件,完整的,可读的。F12一看是找不到。于是怀疑是域名自动映射问题,让运维去掉依然不好使,仔细看访问的是虚拟目录,想到后端服务器用了nginx,nginx找不到是因为不识别你tomcat配置的虚拟目录。
- 测试环境访问:IP+PORT+虚拟目录可以直接访问
- 正式环境访问:IP+PORT+虚拟目录可以直接访问
- 正式环境访问:域名+虚拟目录不可以直接访问 404
采用方式3不行的原因是nginx没有配置location导致,所以让运维配置一个虚拟目录对应的location即可。