当前位置: 首页 > 知识库问答 >
问题:

如何修复生产中的502坏网关错误(Nginx)?

林博厚
2023-03-14

当我试图上传一个大小约为600MB的大csv文件在我的项目中托管在数字海洋,它试图上传,但显示502坏网关错误(Nginx)。

该应用程序是一个数据转换应用程序。

这在本地工作时很好。

sudo tail -30 /var/log/nginx/error.log

节目

[error] 132235#132235: *239 upstream prematurely closed connection while reading response header from upstream, client: client's ip , server: ip, request: "POST /submit/ HTTP/1.1", upstream: "http://unix:/run/gunicorn.sock:/submit/", host: "ip", referrer: "http://ip/"

sudo nano /etc/nginx/sites-available/myproject

节目

server {
    listen 80;
    server_name ip;
    client_max_body_size 999M;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
       alias  /root/static/;
    }
    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }
}

nginx.conf

user root;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

在转换过程发生时,我还运行了javascript加载器。我怎么才能修好这个?

共有1个答案

吴宝
2023-03-14

如果您使用的是Django3.1或更高版本,您可以通过这种方式使文件处理异步,并在文件转换发生时向用户返回响应。你的视野应该是这样的...

    import asyncio
    from django.http import JsonResponse
    from asgiref.sync import sync_to_async
    
    
    @sync_to_async
    def crunching_stuff(my_file):
        # do your conversion here
            
    async def upload(request):
        json_payload = {
            "message": "Your file is being converted"
        }
        my_file = request.POST.get('file')
        
        asyncio.create_task(crunching_stuff(my_file))
        return JsonResponse(json_payload)

在前端,如果使用dropzone.js,用户可以看到文件上传的进度,并且可以更快地得到响应。这是更好的用户体验。https://www.dropzonejs.com/

 类似资料:
  • 单击上面显示的网关的实例URL,我会得到以下错误: 502坏网关:注册的endpoint无法处理请求 相应的登录网关如下所示: 有人能提供建议或意见吗? 多谢!

  • 我的nginx.conf文件是这样的: 现在,在打开一些URL时,它抛出了502个坏网关,但对其他URL则没有。我犯的错误。日志为: 2019/01/10 23:53:39[错误]12139#12139:*5 recv()在从上游读取响应头时失败(104:由对等方重置连接),客户端:127.0。0.1,服务器:localhost,请求:“GET/wordpress/HTTP/2.0”,上游:fas

  • 我有joomla 3. x安装随着几个自定义组件和模块。我检查了错误日志,发现了下面给出的错误消息。 上游从上游读取响应标头时发送了无效标头,客户端:127.0。0.1,服务器:医院,请求:“GET/HTTP/1.1”,上游:fastcgi://127.0.0.1:9000" 如果有人能帮忙或提供解决问题的线索,我们将不胜感激。 谢谢你。

  • 502网关错误。错误日志和nginx配置如下。有什么问题吗? [错误]7660#0:*10 connect()在连接到上游时失败(111:连接被拒绝),客户端:40.83。126.181,服务器:127.0。0.1,请求:“GET/HTTP/1.1”,上游:fastcgi://127.0.0.1:9000,主持人:“www.mysite.com” nginx。形态: vhost/home.conf

  • 尝试构建项目时,我遇到以下错误: 以我的身材。gradle存储库我没有jCenter,所以我得到的这个错误来自仍然指向jCenter的依赖项 Gradle离线模式不是我期望的解决方案 我知道jCenter倒闭了,我们都应该搬到mavenCentral(我已经做到了) 任何变通方法?

  • 我在裸机上安装了一个库伯内特斯集群(使用威睿虚拟机),节点如下 Metallb安装为集群的负载平衡器,calico安装为CNI 我还安装了带舵柄的nginx入口控制器 我部署了一个简单的nginx服务器进行测试 我使用负载均衡器类型的部署从metallb获得IP,工作正常,但当我添加入口时,尽管分配了IP,但我得到错误502坏网关,如下所示: 防火墙已启用,但所需端口已打开 我的服务和pods工作