- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 nginx 邮件列表上发布了这个,但没有收到任何人的回复,所以我想我应该在 stackoverflow 上尝试一下:)
我目前在 Amazon EC2 上托管了一个 Django 应用程序。我的所有数据都通过端口 8000 上的 Gunicorn(用于 UNIX 的 Python WSGI HTTP 服务器。它是从 Ruby 的 Unicorn 项目移植的预 fork 工作模型)提供服务。我不必担心将静态内容(图像)传递给客户端,因为所有这些都是由 Amazon 的 S3 服务为我处理的。 Django通过Gunicorn将内容的url通过json传递给客户端。然后客户端就可以下载它。
我的 Django 应用程序托管在 t1.micro 实例上。以下是 Amazon Web Services 提供的规范:
处理器:最多 2 个 EC2 计算单元(用于短周期突发)。虚拟核心:1内存:615 MiB平台:32位和64位
在此实例上,我有 3 个 Gunicorn 工作线程与我的 Django 应用程序一起运行。
对于我的 Nginx 反向代理服务器,我还使用 t1.micro 实例。我已经设置好了,一切都工作得很好。这是我的 etc/nginx/sites-enabled/default 配置如下:
# Gunicorn server
upstream django {
server 10.0.10.0:8000;
}
# Serve static files and redirect any other request to Gunicorn
server {
listen 80;
server_name 23.0.23.23/;
#root /var/www/domain.com/;
#access_log /var/log/nginx/domain.com.access.log;
#error_log /var/log/nginx/domain.com.error.log;
# Check if a file exists at /var/www/domain/ for the incoming request.
# If it doesn't proxy to Gunicorn/Django.
#try_files $uri @django;
# Setup named location for Django requests and handle proxy details
location @django {
proxy_pass http://django;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
此设置很棒,但它没有考虑慢速客户端的代理缓冲。它也没有考虑缓存,也没有考虑我需要的 nginx 工作线程的数量。如何配置压缩?我发现资源说有一个叫做 gzip 的东西,它支持 json 吗?如何根据 t1.micro 实例规范微调 nginx 配置?
如果您处于我的场景中,您会使用什么设置?非常感谢您的回答和例子。谢谢:)
最佳答案
一般来说,代理缓冲只会在您生成非常大的网页或发送大文件时才有帮助。无论如何,设置起来都很容易,但是您需要将缓冲区大小调整为最大页面大小+20%(任何不适合缓冲区的页面都会写入磁盘),或者有选择地启用代理缓冲您最大的页面。
文档:http://wiki.nginx.org/HttpProxyModule#proxy_buffering
我不太了解您的应用及其内容的动态程度,但在您的应用上设置正确的缓存控制/ETAG header 生成将是您首先要考虑的事情。这会让 Nginx 知道什么是安全的代理。此外,您可能希望设置多个缓存区域来管理缓存在磁盘上占用的空间量。
proxy_cache one;
proxy_cache_path /data/nginx/cache/one levels=1:2 max_size=1G keys_zone=one:1000m;
您需要允许绕过缓存的规则(用于调试或以编程方式)
proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
proxy_cache_bypass $http_pragma $http_authorization;
当您的应用程序抛出错误时,您还希望让您的应用程序无条件地从缓存中提供服务:
proxy_cache_use_stale error timeout invalid_header;
文档:
在站点上启用 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/
您还需要设置一些其他设置:
# Directives turn off 404 error logging.
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
log_not_found off;
}
关于django - 用于上游 Django/Gunicorn 后端的 NGINX 反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16991219/
我尝试了几乎所有命令来杀死 gunicorn 服务器。但没有任何效果。我怎样才能杀死这些进程并释放 80 端口 12652 ? Ss 0:00 sudo gunicorn -b
我正在使用 Apache Airflow,发现 gunicorn-error.log 的大小在 5 个月内增长了超过 50 GB。大多数日志消息都是 INFO 级别的日志,例如: [2018-05-1
我正在使用 在 Digital Ocean 上运行 django gunicorn 和 nginx . Gunicorn 用于为静态文件提供 django 和 nginx。 通过网站上传文件后,我无法
我正在使用 Django 1.8,我想用 gunicorn 运行我的应用程序。 我可以从命令行绑定(bind)到我的 IP 运行它: gunicorn myapp.wsgi:application -
我们正在使用 https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker FastAPI 并且能够使用 gunicorn 日志文件自定义我们
我在 docker 上的 centos7 上运行 Airflow 1.8,但我的网络服务器无法访问浏览器。我通过pip2.7安装了airflow。 Flower ui 显示良好,initdb 运行连接
gunicorn.service cannot open WorkingDirectory and the gunicorn executable. I think it's about per
任何想法为什么我的 gunicorn 服务器无法启动? jeffy@originaldjangster:~$ sudo /home/jeffy/django_files/django_test_ven
我已经安装了gunicorn,但是没有找到gunicorn命令: # pip3.4 install gunicorn Requirement already satisfied (use --upgr
我在有监督的ginicorn部署我的django项目。 我在virtualenv中安装了gunicorn,添加到INSTALL_APPS中。 命令./manage.py run_gunicorn -b
我成功安装了gunicorn: remote: -----> Removing .DS_Store files remote: -----> Python app detected remote: -
Systemd 和 Gunicorn 需要某种 wsgi 文件作为 ExecStart 的最后一个参数:http://docs.gunicorn.org/en/latest/deploy.html?h
我正在尝试将基本应用程序部署到 Amazon EC2使用 Django , Gunicorn , 和 Nginx .我有应用 git clone进入我的AWS Ubuntu实例并正在运行 Django
在更新为使用小型模型中的 spacy_en_core_web_lg 后,我的 fastapi 服务器内存不足。 当运行 fastapi 时,会生成 4 个 gunicorn worker,并且根据内存
我有一个基于这个的 ansible 配置虚拟机 https://github.com/jcalazan/ansible-django-stack但出于某种原因,尝试启动 Gunicorn 会出现以下错
我关注 this如何在 Ubuntu 18.04 指南中使用 Postgres、Nginx 和 Gunicorn 设置 Django。 我创建了以下文件 .socket sudo nano /etc/
我正在尝试按照此 [链接][1] 在 Digital Ocean 上部署简单的 Django 应用程序用 gunicorn 实现它的抛出错误 gunicorn.service: Failed with
这里我想问你,用python运行gunicorn uvicorn,和默认从tiangolo有什么区别? 我尝试使用 JMeter 对这些进行压力测试具有线程属性: 从这些,我得到了结果:: 从上面我尝
因此,我有一个简单的 Flask API 应用程序,它运行在运行 tornado worker 的 gunicorn 上。 gunicorn 命令行是: gunicorn -w 64 --backlo
我已经使用 Gunicorn + Nginx + Supervisor 部署了一个 Django 1.6 应用程序。一切正常,但我的 Gunicorn error.log 一直在发送错误。该文件很大,
我是一名优秀的程序员,十分优秀!