Назад | Перейти на главную страницу

Запустите Apache http, Apache tomcat и nodejs на одном порту

Я веб-разработчик, и для проекта мне нужно запускать tomcat и nodejs без использования порта.

Я видел несколько сообщений о модуле прокси в httpd, поэтому я создал два виртуальных хоста следующим образом:

<VirtualHost *:80>
       ServerName localhost
       # ErrorLog "logs/tomcat-error.log"
       ProxyPreserveHost On
       ProxyPass /tomcat http://localhost:8080/
       ProxyPassReverse /tomcat http://localhost:8080/
</VirtualHost>

<VirtualHost *:80>
      ServerName localhost
      # ErrorLog "logs/nodejs-error.log"
      ProxyPreserveHost On
      ProxyPass /nodejs http://localhost:8000/
      ProxyPassReverse /nodejs http://localhost:8000/
</VirtualHost>

И когда я пытаюсь получить доступ как к localhost / nodejs, так и к localhost / tomcat, я получаю ошибку Not Found.

Может кто-нибудь объяснить мне, почему?

Спасибо ;-)

Я решил свою проблему, сделав это в sites-enabled conf:

NameVirtualHost MY-IP:80

<VirtualHost MY-IP:80>
    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
    ServerName dummy.com
</VirtualHost>

<VirtualHost MY-IP:80>
    DocumentRoot /var/www
    ServerName dummy.org
</VirtualHost>

Надеюсь, это поможет кому-то другому.

Первое совпадение VirtualHost затеняет следующее. Так что ProxyPass к nodejs никогда не достигается.

Вы должны объединить все это как:

<VirtualHost *:80>
   ServerName localhost
   # ErrorLog "logs/tomcat-error.log"

   <Location /tomcat/ >
      ProxyPreserveHost On
      ProxyPass http://localhost:8080/
      ProxyPassReverse http://localhost:8080/
   </Location>

   # ErrorLog "logs/nodejs-error.log"
   <Location /nodejs/ >
      ProxyPreserveHost On
      ProxyPass http://localhost:8000/
      ProxyPassReverse http://localhost:8000/
   </Location>
</VirtualHost>

Включили ли вы proxy и proxy_http модули?

И, конечно, сторона tomcat и nodejs должна быть на месте.