2014-03-05 3 views
1

이것이 내 시도입니다. 10 개 이상의 가상 호스트가있는 apache2 웹 서버가 있습니다. 모든 도메인은 서버 ip에 바인딩되고 apache는 가상 호스트를 통해 라우팅되므로 모든 도메인에서 올바른 컨텐츠를 얻을 수 있습니다. 그것은 이미 수년 이래로 효과가 있습니다. 이제 도전 과제 : 이제이 서버에 node.js로 작성된 몇 가지 웹 애플리케이션이 있습니다. 내가 app을 실행하고 싶을 때, 나는 app과 같은 링크를 호출해야한다 : mynodeapp.com : 3000. 이제 node.js가 아파치 대신 모든 라우팅을 수행하기를 원합니다. 아파치의 포트 9000을 바꿔서 포트 80의 모든 요청을 처리하는 노드로 작성된 프록시를 실행하고 싶다. 나는 이것이 node-http-proxy를 사용하여 가능하다고 생각했다. 나는 그것이 전달과 같은 더 생각, 그래서 노드 프록시 응용 프로그램에 대해 다음 시도 :node.js 프록시 뒤에있는 가상 호스트로 Apache 실행

httpProxy = require('http-proxy'); 

httpProxy.createServer({ 
    forward: { 
    port: 9000, 
    host: 'localhost' 
    } 
}).listen(80); 

을하지만이 req.host 관계없이 모든 것을 전달하는 것 같다. 누구나 아이디어가 있습니까? 들어오는 URL (my.domain.com)을 전달 (또는 프록시)하고 포트 9000 (apache2가 실행되는 곳)에 전체를 전달해야하므로 아파치의 가상 호스트가 나머지를 처리 ​​할 수 ​​있습니다. 최고 마틴

업데이트 : 좋아요, 결국에는 모든 것이 잘됩니다. 그것은 아파치 문제 (잘못된 폴더 대상 .... 얼마나 어리석은.) 사실이었다 내 현재 꽤 좋은 작업 솔루션을 게시 아래는 매우 간단합니다 :

아파치의 이름 가상 호스트가 호스트 필드에서 보이는
var httpProxy = require('http-proxy'); 
var http = require('http'); 
var util = require('util'); 
var url = require('url'); 

var options = { 
    target: 'some-domain.com:9000', 
    target: 'another-domain.com:9000' 
} 

var proxy = httpProxy.createProxyServer(options); 

http.createServer(function(req, res, err) { 
    if(err) console.log(err); 
    var host = util.inspect(req.headers.host); 
    console.log(req.connection.remoteAddress + ' asks for: ' + host + req.url); 

    proxy.web(req, res, function(err) { 
    if(err) console.log(err); 
    }); 
}).listen(80); 

console.log('Awesome proxy is listening on port 80...'); 

답변

1

요청 헤더에. 그들은 모두 동일한 IP 및 포트에서 실행될 수 있습니다.

NameVirtualHost *:9000 

<VirtualHost *:9000> 
    DocumentRoot /var/www/site1 
    ServerName site1.com 
</VirtualHost> 

<VirtualHost *:9000> 
    DocumentRoot /var/www/site2 
    ServerName site2.com 
</VirtualHost> 

서버 이름 지시어는 떨어져

프록시 코드에서 올바르게 "호스트"필드를 채울 확인 가상 서버를 알려줍니다.

0

나는 아파치 뒤에 프록시 노드 응용 프로그램을 떠나, 유사한 솔루션으로 실행하지만, 아파치를 통해 80 standar을 가상 호스트를 실행하고 Node.js를 응용 프로그램 연결 :

https://stackoverflow.com/a/30287224/3617531

가 누구

을 도울 수있는 희망을
관련 문제