2013-01-10 8 views
21

Problem: Potrzebuję hosta aplikacji Node i aplikacji php na tym samym serwerze w różnych domenach.Apache + Node.js + mod_proxy. Jak przekierować jedną domenę do: 3000 i następną: 80

example.com należy użyć portu 80 jako normalne, ale node-example.com powinny trasa do portu 3000.

Routing cały ruch z portu 80 do 3000 działa dobrze przy użyciu mod_proxy, wygląda następująco:

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName node-example.com 
    ServerAlias www.node-example.com 

    ProxyRequests off 

    <Proxy *> 
      Order deny,allow 
      Allow from all 
    </Proxy> 

    <Location /> 
      ProxyPass http://localhost:3000/ 
      ProxyPassReverse http://localhost:3000/ 
    </Location> 

</VirtualHost> 

To jednak powoduje, że zarówno example.com jak i node-example.com wskazują na localhost: 3000 i uruchamiają aplikację Node.

Czy istnieje sposób na utrzymanie adresu example.com i wskazanie portu 80?

Byłoby również dobrze dla example.com/old-admin się wskazywać na porcie 80.

+0

Ci się udało? – Fardin

Odpowiedz

27

Tylko dwie <VirtualHost *:80> tagów

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName www.node-example.com 

    ProxyRequests off 

    <Proxy *> 
      Order deny,allow 
      Allow from all 
    </Proxy> 

    <Location /> 
      ProxyPass http://localhost:3000/ 
      ProxyPassReverse http://localhost:3000/ 
    </Location> 

</VirtualHost> 
<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName node-example.com  

    ProxyRequests off 

    <Proxy *> 
      Order deny,allow 
      Allow from all 
    </Proxy> 

    <Location /> 
      ProxyPass http://localhost:80/ 
      ProxyPassReverse http://localhost:80/ 
    </Location> 

</VirtualHost> 

Powinno to działać w ten sposób;)

Lub jeśli twoja aplikacja localhost:80 nie jest węzłem, możesz usunąć znaczniki <Proxy *> & <Location /> dla tego celu i zastąpić je DocumentRoot /var/www/node-example.com - swoją statyczną ścieżką do index.html

+0

Próbowałem wcześniej używać dwóch tagów virtualhost-tag, ale to nie działało ... Okazuje się, zapomniałem o ustawieniu "NameVirtualHost *". Dzięki za odpowiedź! – olke

+0

Tak, to jest konieczne, aby Twoja konfiguracja działała :) – drinchev

+0

@olke powinien oznaczyć zaakceptowany ... – Pete

Powiązane problemy