nginx为动态生成的文件设置了错误的Content-Type标头

时间:2015-12-10 08:24:31

标签: nginx content-type mpdf hhvm

我有一个使用mPDF(v6.0.0,http://mpdf1.com)动态生成PDF的Web应用程序。虽然Apache和PHP的一切都运行良好但我在使用nginx + HHVM时遇到了一些麻烦。

问题是nginx拒绝设置正确的Content-Type标头,这将是application / pdf。相反,它保留设置text / html,无论我在代码或环境配置中做什么/更改,结果是文档的二进制数据显示在浏览器窗口中。我在没有任何参数的情况下使用mPDF的Output()方法,因此PDF应该内联呈现:http://mpdf1.com/manual/index.php?tid=125

查看源代码(mpdf.php的第8295行)一切都应该没问题:https://raw.githubusercontent.com/mpdf/mpdf/v6.0.0/mpdf.php

我已经确保“application / pdf”在mime.types文件中。将location指令设置为以.pdf结尾的所有URI“add_header Content-Type application / pdf”也不起作用。

这是cURL输出,它引导我正确的方向: HTTP/1.1 200 OK Server: nginx/1.4.6 (Ubuntu) Date: Thu, 10 Dec 2015 08:13:29 GMT Content-Type: text/html; charset=utf-8 Content-Length: 1571243 Connection: keep-alive X-Powered-By: HHVM/3.10.1 Vary: Accept-Encoding Content-disposition: inline; filename="mpdf.pdf" Pragma: public Cache-Control: no-cache, max-age=0, must-revalidate, no-transform Expires: Sat, 26 Jul 1997 05:00:00 GMT Last-Modified: Thu, 10 Dec 2015 08:13:29 GMT

有任何想法或建议吗?谢谢!

更新

原来HHVM就是问题所在。在同一个Header上多次使用header()方法时似乎存在错误。切换到PHP-FPM之后就好了。我还必须确保HOME变量(在PHP的$_SERVER数组中)与web应用程序文件的acutal目录同步。

0 个答案:

没有答案