要激活的 Django、Nginx 和 Varnish gzip 参数

Django, Nginx & Varnish gzip params to be activated

我有一个带有 Gunicorn 的 Django 应用程序,通过 Varnish 并与 Nginx 一起使用。

MyDjangoApp --> Gunicorn --> Varnish --> Nginx --> 客户端

我必须保留哪个 gzip 参数?

在 Django 中?

MIDDLEWARE_CLASSES = (
    # Remove Django Gzip middleware as we already have it in nginx ?
    'django.middleware.gzip.GZipMiddleware',
    ....

在 Nginx 中 ?

http {
    gzip on;
    gzip_disable "msie6";
    gzip_vary on;
    gzip_proxied any;
    ....

在清漆中?

sub vcl_backend_response {
    if (bereq.url ~ "html$") {
            set beresp.do_gzip = true;
    }
....

我必须激活所有 confs 还是只激活 Nginx? 如果我在 Django 中为 ex 激活 GZipMiddleware,我不需要在 Varnish 和 Nginx 上激活它,否则我遗漏了什么?

我对应该在哪里进行 gzip 压缩的方法是这样的:

在 Varnish 后面的 Web 服务器上启用 gzip。

对于你的情况,你可以将它保存在 Django 中。

不要更改默认的 Varnish gzip 参数。 (让它使用 default behaviour 处理 gzip)

为什么?

  • Varnish 可以在其缓存中存储 gzipped 对象(很好,节省存储空间)。
  • 在提供缓存对象时不会花费 CPU 时间进行压缩(大多数客户端会要求压缩对象,而 Varnish 可以直接提供它)

因此,您可以通过在适当级别进行压缩来节省 CPU 和 RAM。