上游Django / Gunicorn后端的NGINX反向代理


撩心
2025-03-19 02:49:32 (4小时前)
  1. 我在nginx邮件列表上发布了这个,但没有收到任何人的回复,所以我想我会给它一个


裂纹
</跨度>
在这里stackoverflow :)

我目前在Amazon EC2上安装了一个Django应用程序。全部 MiB
平台:32位和64位

在这个实例上,我有3名Gunicorn工作人员和我的Django应用程序一起运行。

对于我的Nginx

相反
</跨度>
代理服务器,我也使用t1.micro实例。我把它设置好了

2 条回复
  1. 0# 一只特立独行的猪 | 2019-08-31 10-32



    代理缓冲



    通常,代理缓冲只会在您生成非常大的网页或发送大型文件时帮助您。无论如何,它很容易设置,但你需要将缓冲区大小调整到大约最大页面的大小+ 20%(任何不适合缓冲区的页面都写入磁盘),或选择性地启用代理缓冲你最大的页面。



    文档:

    http://wiki.nginx.org/HttpProxyModule#proxy_buffering



    高速缓存



    我不太了解您的应用程序以及它的内容是多么动态,但在您的应用程序上设置正确的Cache Control / ETAG标头生成将是您首先想要查看的内容。这就是让Nginx知道代理安全的原因。此外,您可能希望设置多个缓存区域来管理缓存在磁盘上占用的空间量。




    1. proxy_cache one;
      proxy_cache_path /data/nginx/cache/one levels=1:2 max_size=1G keys_zone=one:1000m;

    2. </code>


    您将需要允许您绕过缓存的规则(用于调试或以编程方式)




    1. proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
      proxy_cache_bypass $http_pragma $http_authorization;

    2. </code>


    当应用程序抛出错误时,您还希望无条件地从缓存中提供应用程序:




    1. proxy_cache_use_stale error timeout invalid_header;

    2. </code>


    文档:




    Gzip已



    在您的站点上启用gzip始终是CPU时间和带宽之间的权衡。确实,如果您对内容进行gzip,则可以降低通过线路发送的数据量,但如果您在T1 Micro上运行,则会因CPU利用率严重限制代理请求的容量。一般来说gzip对于静态内容来说是一个更好的想法,你可以预先压缩然后反复服务。



    (是的,gzip支持json,但这是因为gzip成为有线格式,并且被客户端透明地解压缩。你应该阅读

    Content-Encoding: gzip




    文档:

    http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/



    杂项



    您还需要设置一些misc设置:



    1.   # Directives turn off 404 error logging.
    2. location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
      log_not_found off;
      }

    3. </code>

登录 后才能参与评论