Tomcat

在同一埠上執行 Apache http、Apache tomcat 和 nodejs

  • November 30, 2015

我是一名網路開發人員,對於一個項目,我需要在不使用埠的情況下執行 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>

您是否啟用了proxyproxy_http模組?

當然,tomcat 和 nodejs 端應該就位。

引用自:https://serverfault.com/questions/734090