1

我的服务器端是 nginx-1.2.4 + php-5.3.17。我有一个 php 脚本来通过 curl 获取另一个站点的内容,但未启用 gzip。虽然 nginx 开启了 gzip。所以数据流看起来像:

                  plain/html                plain/html             gzipped
xxx site's html ==============> php(curl) ==============> nginx ============> user's browser

但是现在,为了加快一点速度,我想启用 php' curl 的 gzip。然后,程序:

                  gzipped                plain/html             gzipped
xxx site's html ===========> php(curl) ==============> nginx ============> user's browser

因为php的curl会自动将gzip后的html解压成纯html,所以当html传给nginx时,nginx会再次进行压缩。

我在想的是,php可以保留gzip压缩的数据并转发给nginx,不需要nginx再压缩一次。预期的过程如下所示:

                  gzipped                gzipped            gzipped
xxx site's html ===========> php(curl) ===========> nginx ===========> user's browser

最好的祝福。

4

1 回答 1

1

您必须发送Accept-Encoding带有 curl 请求的标头:

curl_setopt($cURL, CURLOPT_HTTPHEADER, array("Accept-Encoding: gzip"));

并且不要设置CURLOPT_ENCODING选项。

此外,您可能对nginx gunzip 模块感兴趣。

于 2012-11-15T17:46:27.883 回答