2013-12-12 3 views
0

탄력성을 기반으로 node.js 스크립트를 사용하여 우리가 실행하는 많은 도구를 관리하고 있습니다. 해당 호스트 이름에 따라 특정 ip : 포트로 트래픽을 프록시합니다.탄력성에서 첫 번째 요청 만 작동

원본 요청의 IP 주소를 'x-forwarded-for'헤더로 추가하여 문제가 발생했습니다. 헤더는 첫 번째 요청에만 포함되며 이후 요청에는 포함되지 않습니다. 더 정밀한 점검 위에서 우리는 coude가 심지어 다시 사형 집행되지 않는다고 알아 차렸다.

var bouncy = require('bouncy'); 

var server = bouncy(function (req, res, bounce) { 
    console.log("test"); 
    bounce ("echo.200please.com", {headers: {'x-forwarded-for': req.connection.remoteAddress}}); 
}); 

server.listen(9000); 

는 "테스트"가 첫 번째 요청 콘솔에 기록됩니다

나는 내 문제를 보여주기 위해 다음과 같은 데모를 만들었습니다. 내가 탄력에 무슨 일이 캐싱이 있다고 가정하지만, 그래서 내가 사용자 정의 헤더가 두 번째로뿐만 아니라 포함되어야한다고 생각합니다.

누군가가 여기에서 무슨 일이 일어나고 있는지, 그리고 이것이 버그인지 또는 어떻게 든 기능인 지 알고 있습니까?

답변

0

이것은 기능입니다. 이 기능이나 버그의 경우

server.on('request', function (req, res) { 
    console.log(req); 
}) 

server.listen(9000); 
0

나도 몰라,하지만 난 무엇을하고 있어요 : 당신이 필터에 대한 로그를 확인하려면

,이 같은 요청을 캡처 할 수 있습니다 IP 주소를 응용 프로그램 수준에 저장하는 것입니다. 예를 들어 nodejs에서 다음과 같이합니다 :

var ip = req.headers['x-forwarded-for'] || 
      req.socket.ip || 
      req.connection.remoteAddress ||     
      req.socket.remoteAddress || 
      req.connection.socket.remoteAddress; 

    if (req.headers['x-forwarded-for']) { 
     req.socket.ip = ip; 
    } 

이제 나는 req.socket.ip IP 주소를 가지고 있습니다. 이것이 최선의 해결책인지 확실하지 않지만 작동합니다.

관련 문제