我在nginx邮件列表上发布了这个问题,但没有听到任何回复,所以我想在stackoverflow上试一试 :)
我目前在Amazon EC2上托管了一个Django应用程序。我的所有数据都通过Gunicorn在端口8000上提供服务(这是一个Python WSGI HTTP服务器,采用预分叉工作模型,由Ruby的Unicorn项目移植而来)。我不必担心将静态内容(图像)传递给客户端,因为所有这些都由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配置?
如果你处于我的情况下,你会使用什么设置?非常感谢您的答案和示例。谢谢 :)