浏览器针对 txt 文件一般默认是直接打开的,解决办法就是告诉浏览器这种类型的文件需要下载而不是直接打开,在 nginx 中通过反向代理可以直接过滤访问的 url 在指定的访问中添加 header,具体如下:
server { #监听的端口 listen 80; server_name www.02405.com; location / { root html; if ($request_filename ~* ^.*?.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){ add_header Content-Disposition attachment; } index index.html index.htm; } }
红色代码表示过滤访问的 url 中以 txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx 结尾的,动态添加 header:Content-Disposition attachment。
重点注意网上很多资料中都是 add_header Content-Disposition: 'attachment';,相较于上面的代码多了一个':'符号,这样写在 IE,火狐等浏览器中都没问题,但在谷歌浏览器中仍然无法正常下载,而直接打开!
经过检查,问题就是出现在这个多出来的冒号上了,去掉冒号,完全按照上面两行红色代码写就可以了。
另外需要注意的是更改 nginx 配置文件,需要重启 nginx 服务才可以生效。

声明:1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。







