我有一个资产经理进程的CSS和JS通过PHP。 我使用nginx和php5-fpm来加载我的应用程序。 但返回的CSS和JS文件不gziped。
例如我的url是http://mysite.com/phpcssprocessor/mycssfile.css这个文件通过PHP生成。
这是我的虚拟主机configuration:
# / location / { # gzip gzip on; gzip_static on; gzip_proxied any; gzip_types application/javascript application/json application/x-javascript application/xml text/css text/javascript text/plain text/x-component text/xml; # disable etag if_modified_since off; add_header 'Last-Modified' ''; # mvc rewrite try_files $uri $uri/ /index.php?$uri&$args; }
我只是遇到了同样的问题,最终解决了这个问题。
问题是style.css.php文件在顶部:
header("Content-type: text/css; charset: UTF-8");
而这阻止了nginx的gzip文件。 显然,“gzip_type text / css”不会select这个,因为“charset”部分。
我从header()参数中删除了“; charset:UTF-8”,nginx开始gziping输出。
header("Content-type: text/css");
后来我补充说
charset UTF-8;
在那个CSS处理器的nginx位置块,所以我得到正确的头,gzip正在工作。
希望这可以帮助别人。
你的PHP脚本是否正确设置了Content-Type: HTTP响应头? 它对应于你的gzip_types选项吗?
您的客户端是否正确设置了Accept-Encoding: gzip HTTP请求标头?
你的相关的http , server或php的处理location ,包括gzip压缩指令? 当内部redirect通过try_files从/ location到php location ,在/ location指定任何types的gzip压缩将是noop – 您必须全局指定它,或者在完成请求的最后一个location中间位置不影响最终处理)。
如果没有上述三个,你将不会得到任何gzip压缩。
在你的具体情况,似乎try_filesredirect到另一个location导致你的悲伤,因为我看到你必须在/ location指定gzip的东西,这可能是一个noop。 将gzip指令移到/ location外部。 同样,您也可以将其他选项从try_files / location移开。