2014-01-29 6 views
2

다른 nodejs/express 앱의 하위 디렉토리에 Ghost 블로깅 프로그램 (v0.4)을 설정하려고합니다. (내 dev에 컴퓨터에)이 같은 익스프레스를 통해 내 주요 응용 프로그램에서 내가 설정 유령의 프록시를, 그래서 Node http-proxy and express하위 디렉토리 및 노드 -hcp 프록시에있는 고스트

: '

var proxy = new httpProxy.createProxyServer(); 
server.get('/blog*', function (req, res, next) { 
    proxy.web(req, res, { 
     target: 'http://localhost:2368' 
    }); 
}); 

이를 나는 여기에 설명 된 단계에 따라 작업을 얻을 수 있었다 블로그 콘텐츠에 액세스합니다. 그러나, 내가/blog/ghost/signin에 가서 로그인하려고하면 404가됩니다. 내가 말할 수있는 한, 로그인 페이지는 블로그/디렉토리 외부로 가지 않으므로 왜 실패할까요?

블로그를 직접 (포트 2368에서) 볼 수 있으면 잘 로그인 할 수 있습니다.

답변

2

GET 전용 경로를 정의 했으므로 GET 요청을 프록시하고 있지만 로그인 및 가입은 POST 요청을 사용합니다. 일반적으로 아파치 또는 nginx의 프록시 규칙은 주어진 URL에 대해 허용 된 모든 메소드를 프록시하지만, 메소드로 핸들러를 정의 했으므로 이런 일은 발생하지 않습니다.

첫 번째 노드 응용 프로그램이 처리 할 내용을 모르는 게시판 POST는 404를 처리합니다.

POST 외에도 알림 메시지를 클릭하고 게시물을 삭제하려면 DELETE 메서드가 필요합니다. 나는 다른 메소드들 (OPTIONS), GET, POST, DELETE만이 내가 관찰 한 유일한 메소드인지 여부를 확신 할 수 없다. 만약 당신이 페이지가 수행하는 요청을 살펴보면 어떤 메소드가 실패했는지를 알 수있을 것이다. 방화범이 끌려.

는,이 문제를 해결 당신이 게시물에 대한 GET으로 추가 한 동일한 처리기를 추가하려면 넣어뿐만 아니라 삭제 :

server.post('/blog*', function (req, res, next) { 
    proxy.web(req, res, { 
     target: 'http://localhost:2368' 
    }); 
}); 
server.delete('/blog*', function (req, res, next) { 
    proxy.web(req, res, { 
     target: 'http://localhost:2368' 
    }); 
}); 
server.put('/blog*', function (req, res, next) { 
    proxy.web(req, res, { 
     target: 'http://localhost:2368' 
    }); 
}); 

이 방법을, 관리자 인터페이스는 올바른 작동합니다.

+1

감사합니다. 그러나 이제 로그인을 시도하면 Express 서버가 잠시 멈추고 다음 오류로 종료됩니다. '오류 : socket hang up at createHangUpError (http.js : 1472 : 15) (Socket.socketCloseListener (http.js : Socket.EventEmitter.emit (events.js : 95 : 17)에서 at TCP.close (net.js : 466 : 12)'server.post 호출에 로그인하고 있습니다. 저 멀리까지 갈 수는 있지만 유령 측에서는 벌목이 일어나지 않습니다. – Daren

+0

해결되었습니다. 나는'server.use (express.urlencoded());를 넣어야했다. server.use (express.json());'경로를 마친 다음 관리 인터페이스가 작동하기 시작했습니다. 당신의 도움을 주셔서 감사합니다! – Daren

+0

'PUT' 라우트 핸들러도 추가해야합니다. 다른 모든 것은 작동했지만 설정과 사용자 페이지는'PUT' 라우트를 호출합니다. –