Плохой шлюз 502 в приложении Openshift NodeJS при загрузке файла

У меня есть приложение, основанное на NodeJS и AngularJS, и я перевел его на openshift. Но каждый раз, когда я пытаюсь что-то загрузить, я получаю следующую ошибку:

POST http://www.domain.de/api/upload/file 502 (Bad Gateway) 

Angular отправляет данные следующим образом:

$scope.newFile = function() {
    $scope.id = $scope.group._id;
    var fd = new FormData();
    var file = $scope.files[0];
    fd.append('file', file);
    if (file.type!="application/pdf"){
        mvNotifier.error("Nur PDF Dateien sind akzeptiert.");
        return;
    }       
    $http.post('/api/upload/file', fd, {
        transformRequest: angular.identity,
        headers:{'Content-Type': undefined}
    })
    .success(function(d) {
        var data = {
            name: file.name,
            description: $scope.descriptionfile
        }
        mvNotifier.notify("Bis hier hin klappt alles");
        console.log("sucess on uploading ");

        mvFactory.POST(data, mvGroup, {_place:"file", _id:$scope.id}).then(function(data) {
            $scope.newfile=false;
            $scope.group.files.push({name:file.name, description:$scope.descriptionfile});
            mvNotifier.notify("Datei hochgeladen");
        }, function(reason) {
            mvNotifier.error("reason");
        })
    })
    .error(function(data,status,header) {
        mvNotifier.error("Upload hat nicht funktioniert.")
        console.log("data", data);
        console.log("status", status);
        console.log("header", header);
    })

И Сервер перенаправляется к файлу, используя busboy, чтобы сохранить его:

uploadFile: function(req,res) {
    console.log("req",req.files);
    if (process.env.OPENSHIFT_DATA_DIR!= undefined) {
        var cPath = process.env.OPENSHIFT_DATA_DIR;
    } else {
        var cPath = path.resolve('..', 'data');
    }
    var busboy = new Busboy({ headers: req.headers });
    req.pipe(busboy);
    busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
        var wPath = cPath + '/uploads/documents';
        file.pipe(fs.createWriteStream(wPath + '/' + filename));

        file.on('end', function() {
            console.log('File [' + fieldname + '] Finished');
        });
    });
    busboy.on('finish', function() {
        console.log('Done parsing form!');
    });
    res.status(200).end();

}

На Localhost все работает нормально и данные сохраняются на сервер. но я получаю ответ о плохом шлюзе и этот заголовок:

<title>502 Bad Gateway</title>
</head><body>
<h1>Bad Gateway</h1>
<p>The proxy server received an invalid response from an upstream server.<br />

Может кто-то мне помочь, пожалуйста?


person gope153    schedule 18.11.2014    source источник


Ответы (1)


Я решил проблему. Я публикую это, чтобы тот, у кого есть проблема, мог ее решить.

Балансировщик веб-нагрузки в openshift — это HAproxy, и у него есть проблемы с загрузкой, поскольку ответ сервера не совпадает с запросом из-за типа контента. Я переключился с $http с angular на XHR. Это решило проблему и работает нормально. Тип контента, который я вообще не устанавливал. теперь он работает нормально.

person gope153    schedule 18.11.2014