我在 nginx 邮件列表上发布了这个,但没有收到任何人的回复,所以我想我会在 stackoverflow 上给它一个破解:)
我目前在 Amazon EC2 上托管了一个 Django 应用程序。我的所有数据都通过端口 8000 上的 Gunicorn 提供(用于 UNIX 的 Python WSGI HTTP 服务器。它是从 Ruby 的 Unicorn 项目移植的 pre-fork worker 模型)。我不必担心将静态内容(图像)传递给客户端,因为所有这些都是由 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 配置?
如果你在我的场景中,你会使用什么设置?非常感谢您的回答和示例。谢谢 :)