502 Bad Gateway" with nginx, uwsgi python-flask

Проблема заключается в том, что на одной странице сайта все загружается:

  

    @app.route('/profile', methods=['POST'])
    @login_required
    def profile():
        user_name = request.form["name"]
        telegram = request.form["telegram"]
        phone = request.form["phone"]
        file = request.files['file']
        if 'file' not in request.files:
            flash('No file part')
            return redirect(request.url)
        if file.filename == '':
            flash('No image selected for uploading')
            return redirect(request.url)
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join('assets/uploads/avatars/', filename))
            flash('Image successfully uploaded and displayed below')
            database = sqlite3.connect('profiles.db')
            sql = database.cursor()
            sql.execute("SELECT user_id FROM users")
            all_id = sql.fetchall()
            print(all_id)
            ids = []
            for item in all_id:
                x = str(item)[1:-2] 
                y = x.lower()
                ids.append(y)
            if data in ids:
                im = Image.open('assets/uploads/avatars/'+filename)
                cropped_avatar = crop_max_square(im).resize((200, 200), Image.LANCZOS)
                cropped_avatar.save(os.path.join('assets/uploads/avatars/small/', filename))
                cropped_avatar.close()
                avatar_link = 'uploads/avatars/small/'+filename
                print("cropped avatar save")
                print("id is exist, add avatar...")
                sql.execute("""UPDATE users SET avatar_link=?, user_name=?, telegram=?, phone=?  WHERE user_id = ?""", (avatar_link, user_name, telegram, phone, data))
                database.commit()
                print("avatar succesfully uploaded!")
            
            return redirect(url_for('profile_upload'))
        
        else:
            flash('Allowed image types are - png, jpg, jpeg, gif')
            return redirect(request.url)

А на другой при загрузке выдает вышеописанную ошибку: 502 Bad Gateway nginx


    @app.route('/upload', methods=['POST','GET'])
    @login_required
    def upload():
        
        order_id = request.url.split('=')[1].replace('%20', ' ')
        print(str(order_id))
        
        class orderPageData():
            name = get_selected_order(order_id)[0]
            
        class userPageData():
            avatar = get_user_data(data)[9]
            name = get_user_data(data)[3]
            telegram = get_user_data(data)[4]
    
        
        f = request.files.getlist('files[]')
        
        dirName = str(order_id)
        user_folder = 'assets/uploads/userfiles/'+dirName
        
        try:
            os.mkdir(user_folder)
            print('directory is created!')
        except FileExistsError:
            print("Directory " , dirName ,  " already exists")
            
        for file in f:
            if file and allowed_file(file.filename):
                filename = secure_filename(file.filename)
                file.save(os.path.join(user_folder, filename))
                # flash('%s uploaded!' %file.filename)
                
            # return redirect(request.url)
        
        return render_template('upload.html', userPageData = userPageData, orderPageData=orderPageData)

Возможно это как то связано с тем, что в первом варианте url "чистый": http://site.ru/profile и загрузка проходит нормально, а во втором варианте url с доп данными: http://site.ru/order?x=adasdasd

В логе nginx:

[error] 23587#23587: *47 upstream prematurely closed connection while reading response header from upstream, client: 81.200.10.245, server: site.ru, request: "POST /upload?a=adasdasd HTTP/1.1", upstream: "uwsgi://unix:/tmp/flask-uwsgi.sock:", host: "site.ru", referrer: "http://site.ru/upload?a=adasdasd"

файл nginx.conf :

 

     GNU nano 2.9.3                                                                        /etc/nginx/nginx.conf                                                                                  
    
    user www-data;
    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 0;
            types_hash_max_size 2048;
            fastcgi_read_timeout 400s;
            send_timeout                10m;
            client_header_timeout       10m;
            client_body_timeout         10m;
            large_client_header_buffers 8 32k;
            proxy_connect_timeout   90s;
            proxy_send_timeout  120s;
            proxy_read_timeout  120s;
            include /etc/nginx/mime.types;
            default_type application/octet-stream;
            default_type application/octet-stream;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
            ssl_prefer_server_ciphers on;
            access_log /var/log/nginx/access.log;
            error_log /var/log/nginx/error.log;
            gzip on;
            include /etc/nginx/conf.d/*.conf;
            include /etc/nginx/sites-enabled/*;
            client_max_body_size 2000m;
    }

Ошибка вылетает при загрузке такого же файла как и на первом роуте (png ~ 3мб) На локальном сервере все равботает без проблем. При выполнении код даже не создает папку для файлов, то есть сайт виснет и чего то ждет, не дождавшись ошибку.

Апач не запущен.

Честно говоря я вообще не разбираюсь в устройстве nginx и wsgi. Третий день рою в сети решения.

Главное - я не понимаю проблема с кодом или с сервером.


Ответы (0 шт):