python - NGINX 阻止烧瓶后端代码执行吗?
问题描述
我的烧瓶网络应用程序基于 socket.io、flask、nginx 和 gunicorn。前端功能之一使用 socket.io 向后端发送 1.3MB 消息。我知道从 3.x socket.io maxHttpBufferSize 从 100MB 减少到 1MB,所以我在服务器端将 max_http_buffer_size 限制设置为 2MB。一切正常,后端收到消息,但在后端执行代码几秒钟后,它停止,而 nginx error.log 和 gunicorn.log 中没有任何信息。Web 浏览器(Opera、Chrome)控制台也不会返回任何错误。我认为问题出在 nginx 方面,因为当我只使用 gunicorn 执行我的应用程序时,它以正确的方式工作。
你知道我应该在我的 nginx 配置中改变什么吗?还是问题出在其他地方?我在用着
- 蟒蛇 3.7.9 ,
- python-engineio 4.0.0 ,
- python-socketio 5.0.2 ,
- Flask-SocketIO 5.0.0 ,
- Javascript SocketIO 3.0.0
- 独角兽 20.0.4 ,
- nginx 1.14.0
我的 .service 配置文件
[Unit]
Description=Gunicorn instance to serve <my_app>
After=network.target
[Service]
User=<my_user>
Group=www-data
WorkingDirectory=/path/to/my/app
Environment="PATH=/path/to/my/env/bin"
ExecStart=/path/to/my/env/bin/gunicorn --certfile=/path/to/my/app/cert.crt --keyfile=/path/to/my/app/key.key --access-logfile /path/to/my/app/gunicorn_logs.log --worker-class eventlet -w 1 --timeout 300 -b 0.0.0.0:5000 <my_app>:app
[Install]
WantedBy=multi-user.target
我的 nginx 代理请求配置
server{
listen 80;
listen [::]:80;
server_name <my_domain> <my_server_ip>;
return 301 https://$host$request_uri;
}
server{
listen 443 default_server ssl;
listen [::]:443 default_server ssl;
access_log /path/to/my/app/access.log;
error_log /path/to/my/app/error.log;
ssl_certificate /etc/letsencrypt/live/<my_domain>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<my_domain>/privkey.pem;
server_name <my_domain> <my_server_ip>;
proxy_read_timeout 300;
# reverse proxy for HTTP connection
location / {
include proxy_params;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://0.0.0.0:5000/;
proxy_redirect off;
}
# reverse proxy for Socket.IO connections
location /socket.io {
proxy_pass https://0.0.0.0:5000/socket.io;
proxy_redirect off;
proxy_buffering 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;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
# let's encrypt host validation
location ~ /.well-known{
root /path/to/my/app/static/;
}
}
解决方案
推荐阅读
- excel - 将特定范围复制到另一个 Excel 工作簿
- ios - 无论 iOS 11.3 WKWebView 中的输入类型如何,都会出现登录自动完成键盘栏
- arrays - KSH 替代读取 -a?
- validation - NiFi avro 模式使用正则表达式验证字符串
- c# - 故障排除 FileDialog 尝试更新 textBox1
- asp.net-core - 带有 React (CRA) 的 ASP.NET Core 2.1 中的响应压缩
- python-3.x - 如何在 Python 中测试 wald?
- css - 如何消除两个倾斜图像之间的白色间隙?
- c# - C# EntityFramework 获取数据的有效方式(OrderBy + Distinct)
- c# - 如何在 .Net Core Web Api 中创建自定义角色?