Nginx 和 USWGI 的请求块大小无效

Nginx 和 USWGI 的请求块大小无效

我正在尝试使用 Docker 和 Nginx 对 2 个 Python 应用程序进行负载平衡。

App 1 使用 UWSGI 运行,App 2 使用默认 Python 服务器运行(我使用 App 2 的默认服务器只是为了测试目的。最终两者都应该使用 UWSGI)

层次结构如下:

-app1
---app.py
---Dockerfile
---app.ini

-app2
---app.py
---Dockerfile

-nginx
---Dockerfile
---nginx.conf

-docker-compose.yml

app.py(对于 app1 和 app2 来说都是相同的)

from flask import request, Flask
import json

app1 = Flask(__name__)

@app1.route('/')
def hello_world():
    return 'Salam alikom, this is App1 (App2 for app2) :)'

if __name__ == '__main__':
    app1.run(host='0.0.0.0')

app1/Dockerfile

FROM python:3
COPY ./requirements.txt /requirements.txt
WORKDIR /
RUN pip install -r requirements.txt
COPY . /
ENTRYPOINT ["uwsgi", "app.ini"]

app1/应用程序.ini

[uwsgi]
wsgi-file = app.py
callable = app
socket = :5000
processes = 4
threads = 2
master = true
chmod-socket = 660
vacuum = true
die-on-term = true

app2/Dockerfile

FROM python:3
COPY ./requirements.txt /requirements.txt
WORKDIR /
RUN pip install -r requirements.txt
COPY . /
ENTRYPOINT [ "python3" ]
CMD [ "app.py" ]

nginx/nginx.conf

upstream loadbalancer {
    least_conn;
    server 192.168.100.2:9001;
    server 192.168.100.2:9002;
}
server {
    location / {
        proxy_pass http://loadbalancer;
    }
}

docker-compose.yml

version: '3'
services:
  app1:
    build: ./app1
    ports:
      - "9001:5000"
  app2:
    build: ./app2
    ports:
      - "9002:5000"
  nginx:
    build: ./nginx
    ports:
      - "9003:80"
    depends_on:
      - app1
      - app2

当我运行 docker compose 文件时,会创建应用程序 1、应用程序 2 和 nginx 服务器的容器。当我访问端口 9003 上的负载均衡器时,只显示应用程序 2。当我手动转到端口 9001 时,我收到invalid request block size: 21573 (max 4096)...skip应用程序 1 的错误消息。

如果我也对应用程序 1 使用默认的 Python 服务器,那么负载平衡可以正常工作,但我不想使用它,因为默认的 python 服务器仅用于开发环境。

有人可以帮忙吗?

答案1

我遇到了与无效块大小非常相似的问题,在我的情况下,它阻止对应用程序进行身份验证并给出“502 错误网关”错误。

长话短说,我在 uwsgi.ini 文件中添加了以下行

[uwsgi]
为了清晰起见省略的内容
缓冲区大小 = 8192

现在听起来你需要增加到 32,768 (32x1024),甚至更多。我只比默认值 (4,096) 稍微超出了一点点 (~5,000)。

希望这能有所帮助。顺便说一下,这里还有更多关于这个问题的内容:

https://stackoverflow.com/questions/15878176/uwsgi-invalid-request-block-size

相关内容