【问题标题】:Redirect Django site request on multiple ports with nginx使用 nginx 在多个端口上重定向 Django 站点请求
【发布时间】:2020-05-12 22:10:02
【问题描述】:

我有一个域说 'mydjango.com' 。当它被调用时,我想处理同一 IP 上多个端口上的请求。 122.34.55.1:8000、122.34.55.1:8001、122.34.55.1:8002 这对于负载平衡是预期的。我正在使用 wsgi、dgango 和 ngix。 我的 nginx 配置文件 /etc/nginx/sites-available/djwsgi 是 -

    server {
        listen 80;
        listen 8001;
        listen 8002;
        listen 8003;

        location = /favicon.ico { access_log off; log_not_found off; }
        root /home/raka/djwsgi;
        server_name  mydjango.com;

        location /static/ {
            root /home/raka/djwsgi;
        }

        location / {
            include uwsgi_params;
            uwsgi_pass unix:/run/uwsgi/djwsgi.sock;
        }
    }

但默认情况下 mydjango.com 仅映射到端口 80。 当我提到诸如 mydjango.com:8002 之类的端口号时,正在调用其他端口 我需要的是 - 当我调用 mydjango.com 时,nginx 应该每次都调用下一个端口。 比如,80 然后 8001 然后 8002, 8003, 然后 80, 8001, . 请任何人提出任何想法!

谢谢

【问题讨论】:

    标签: django nginx-config django-wsgi


    【解决方案1】:

    我不确定这就是你想要的。告诉我

    upstream mydjangoback {
           server 127.0.0.1:8000;
           server 127.0.0.1:8001;
           server 127.0.0.1:8002;
    }
    
    server {
            listen 80;
    
            location = /favicon.ico { access_log off; log_not_found off; }
            root /home/raka/djwsgi;
            server_name  mydjango.com;
    
            location /static/ {
                root /home/raka/djwsgi;
            }
    
            location / {
                proxy_pass http://mydjangoback;
            }
        }
    

    【讨论】:

    • 使用你建议的配置我继续前进,它有帮助。现在我收到 502 bad gateway 错误。 2020/01/28 11:43:34 [错误] 3081#3081: *1 connect() 在连接到上游时失败(111:连接被拒绝),客户端:127.0.0.1,服务器:myvosta.com,请求:“GET /HTTP/1.1”,上游:“127.0.0.1:8000”,主机:“myvosta.com”
    • 嗨 ErnestBidouille,实际上我想平衡 django 应用服务器上的负载。所以这里我的计划是处理多个端口上的客户端请求。如果一个端口忙,当前请求将使用另一个端口。那么您能否分享一下您对此是否可行的想法?
    【解决方案2】:

    我找到了完整的解决方案。我在这里张贴。 这就是 nginx 和 wsgi 用来平衡我们网站的负载并避免在服务器上手动运行 Django 应用程序的方式。

    upstream backend {
        server 127.0.1.1:8002;
        server 127.0.1.1:8001;
        server 127.0.1.1:8000;
    }
    
    
    server {
        listen 80;
        listen [::]:80;
    
        location = /favicon.ico { access_log off; log_not_found off; }
        root /home/raka/djwsgi;
        server_name  mysite.com;
    
        location /static/ {
            root /home/raka/djwsgi;
        }
    
        location / {
            include         uwsgi_params;
            uwsgi_pass      unix:/run/uwsgi/djwsgi.sock;
            proxy_pass http://backend;
        }
    }
    
    server {
        listen 8000;
        listen 8001;
        listen 8002;
    
        location = /favicon.ico { access_log off; log_not_found off; }
        root /home/raka/djwsgi;
        server_name  mysite.com;
    
        location /static/ {
            root /home/raka/djwsgi;
        }
    
        location / {
            include         uwsgi_params;
            uwsgi_pass      unix:/run/uwsgi/djwsgi.sock;
        }
    }
    

    在上面的配置中可以设置很多键来获得额外的好处。 就像在 wsgi 配置文件中一样,我们可以提及进程的数量。

    【讨论】:

      猜你喜欢
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多