pdf在浏览器上无法正常加载的问题

一、背景

觉得很有意思给大家分享一下。事情是这样的,开发给我反馈说,线上环境接口请求展示pdf异常,此时碰巧我前不久正好在ingress前加了一层nginx,恰逢此时内心五谷杂陈,思路第一时间便放在了改动项。捣鼓了好久无果,然后在测试环境搭建一套环境请求,竟然是正常。好了,好了,有正常的情况就行了,接下来就是找不同之处了。

二、步骤

1.修改nginx.conf,无果

bash 复制代码
default_type application/pdf;

2.调整架构,nginx不走ingress,直接到后端svc:port,避免ingress出现问题。避免多一层代理,多一点出问题的概率。无果,那么就不是ingress的问题。

3.对比异同。测试环境浏览器接口返回的类型是pdf,而线网是plain。激动人心,找到不一样的地方就有思路了。那么如何修改type呢?

bash 复制代码
# 隐藏后端服务器返回的Content-Type头
proxy_hide_header Content-Type;

# 添加新的Content-Type头,声明响应为PDF文件
add_header Content-Type application/pdf;

4.问题解决,撒花~

三、思考

为啥测试环境不需要加这个参数,而线网需要呢?还是需要找异常。第一直觉怀疑起nginx的版本,果然一看,测试环境1.20.1,线网1.14.1,版本老旧的有问题,基本心理已然有九成把握了。

四、复现

把线网的版本直接打包放到测试,重启。一切如我预料,如下图所示。加上配置,果然又如我所料,恢复正常。那么为啥线网测试nginx版本差这么多呢?因为线网严格按照规范,编译安装最常用的nginx,而测试环境犯懒直接yum安装。。。。。。。。属实是自己给自己挖坑

相关推荐
南风微微吹3 小时前
2026初级会计师考试历年真题及答案解析电子版pdf(2021-2025年)
pdf
养肥胖虎4 小时前
Docker学习笔记:后端、数据库和反向代理怎么一起跑起来
后端·nginx·docker·postgresql·go·部署
树下水月5 小时前
文件分片上传接口(Easyswoole)被nginx拦截,并返回状态码400和408的抓包排查过程
运维·nginx
weixin_441003645 小时前
教师资格证(教资)面试历年真题2017-2025全套PDF
pdf
9命怪猫10 小时前
[K8S小白问题集] - APIServer接受到的API调用都是什么样的?与http请求的API差别很大吗?
k8s
林恒smileZAZ11 小时前
前端如何让图片、视频、pdf等文件在浏览器直接下载而非预览
前端·pdf
冷小鱼11 小时前
从 Docker 到容器编排:框架选型与指令详解实战指南
运维·docker·容器·k8s·docker compose·docker swarm
nashane11 小时前
HarmonyOS 6学习:解决无限循环动画被打断后“消失“的诡异问题
运维·nginx·harmonyos 5
wxh_无香花自开12 小时前
k8s证书到期处理
k8s
2501_9307077813 小时前
使用C#代码压平 PDF 表单字段
数据库·pdf·c#