Я создал небольшой скрипт прокси-узла, который ищет request.url
и либо передает запрос на мой сервер Apache, либо использует узел для
процесс / ответ на этот запрос. Я был успешным до сих пор,
все работает нормально, но когда я включаю mod_deflate для apache,
"странные вещи произойдут".
Похоже, что узел просто "отменяет" или "останавливает" ответ на ранний путь.
Я слушаю событие "data" из моего запроса, и в какой-то момент
узел просто решает, что ответ закончился (что неверно) и
запускает событие "конец".
Фрагмент кода:
var apache = http.createClient(82, 'localhost');
function pass_to_apache(req, res){
var request = apache.request(req.method, req.url, req.headers);
req.addListener('end', function() {
request.end();
});
req.addListener('data', function(chunk) {
request.write(chunk);
sys.puts('writting chunk\n');
});
request.addListener('response', function(response) {
res.writeHead(response.statusCode, response.headers);
response.addListener('data', function(chunk) {
sys.puts('writting data..\n');
res.write(chunk);
});
response.addListener('end', function() {
sys.puts('end of request');
res.end();
});
});
}
var MainServer = http.createServer(function(request, response) {
sys.puts('received '+request.method+' '+request.url + "\n"+JSON.stringify(request.headers));
if(/^\/node/.test(request.url)) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end("Hi, it's node =)\n");
}
else if(/^\/exit/.test(request.url)) {
sys.puts('closing..\n');
MainServer.close();
throw new Error('forced');
}
else {
pass_to_apache(request, response);
}
});
MainServer.listen(80, 'typeofnan.com');
Вы можете «увидеть» это в действии на www.typeofnan.com && www.typeofnan.com / node / everything
edit: пока отключен nodejs.
Помните, это работает как талисман, если gzip / deflate не используется
апач. Я попытался установить кодировку "бинарный" в моем ответе, но нет
успех тоже.
Я что-то здесь упускаю? Может ли кто-нибудь подтвердить это поведение?
Я использую последнюю версию (0.2.0).
Возможно, есть другое (лучшее) решение для использования проксискрипта, подобного этому?