web-dev-qa-db-ja.com

同じポートでApachehttp、Apache Tomcat、nodejsを実行します

私はWeb開発者であり、プロジェクトでは、ポートを使用せずにTomcatとnodejsを実行する必要があります。

Httpdでプロキシモジュールに関する投稿を見たので、次のように2つの仮想ホストを作成しました。

<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の両方にアクセスしようとすると、NotFoundエラーが発生します。

誰かが私に理由を説明できますか?

ありがとう;-)

1
Senorihl

最初に一致した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側を配置する必要があります。

0
473183469