gpt4 book ai didi

django - 如何通过 Amazon EC2 使用 Gunicorn 设置 Nginx 代理缓冲?

转载 作者:行者123 更新时间:2023-12-04 00:43:06 26 4
gpt4 key购买 nike

我的 Django 应用托管在 Amazon EC2 上。 Gunicorn 在同一台机器上运行并提供我拥有的所有动态内容。没有静态内容。我有两台这样的机器(两台机器都在微型实例上运行 Ubuntu 11.04。它们很容易水平扩展)并且我在这两台服务器前面都有一个 ELB(弹性负载均衡器)。

为了举例,这两个 gunicorn/django ubuntu 机器的外部 ip 是:

12.34.567.12:8000 & 21:43:765:21:8000 (gunicorn runs on port 8000). 

如果我将这些地址中的任何一个放入我的浏览器,我就可以与我的服务器交互并发送/检索数据。

当我在这两台机器前面放置一个 ELB 时,我可以用来与 DJANGO/GUNICORN 服务器交互的新地址是:

dualstack.myloadbalancer-123456789.us-east-1.elb.amazonaws.com:8000

当我在互联网上阅读大量资源时,许多人建议在 ELB 后面的 Django 应用程序服务器前面放置一个 NGINX 框,以缓冲对慢速客户端的请求。我认为这将是一个很好的功能,因为我不想丢失任何请求。下图会解释的更清楚:

enter image description here

就像上图一样,我如何配置位于 django 应用程序/gunicorn 服务器前面的 nginx 框充当反向代理,以便它可以缓冲慢速客户端的请求? (这样,它不会超时,而是保持请求不丢失)

最佳答案

您正在寻找 nginx HttpProxyModule我相信。你在 nginx 中定义一个上游

upstream webservers {
server 12.34.567.12:8000;
server 21.43.765.21:8000;
}

然后通过proxy_pass将请求转发给上游。

server {
listen 443; //Port you want nginx to listen on
location / {
proxy_set_header Host $http_host;
proxy_read_timeout 330;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://webservers ;
}
}

除非我弄错了,否则 HttpProxyModule 在传递请求之前会缓冲整个请求。这可能会破坏一些在此过程中需要流式传输或交互的项目,但这是您面临的限制。

我的 nginx 有点生锈,所以它可能无法工作,但应该是这样的

关于django - 如何通过 Amazon EC2 使用 Gunicorn 设置 Nginx 代理缓冲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16740525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com