RHEL 5.0のApacheでTomcat Webアプリケーションを仮想的にホストする[閉じる]

RHEL 5.0のApacheでTomcat Webアプリケーションを仮想的にホストする[閉じる]

ホスティングの問題を解決しています!共有、対話などを可能にする組織用のWebアプリケーションを開発しました。 LANに配布したいです。しかし...

エンドユーザーが次のように入力したくありません。10.21.34.56:8080/webapp

代わりに、次のように入力し、http://www.webapp.com イントラネットのローカルDNSにそのIPを確認させるようにしてください。

少しはできます...成功しました: "www.webapp.com:8080"。

8080を入力したくありません。

私はこれを行う方法を見つけましたが。私は完全に満足していません。

ブラウザはデフォルトですべてのhttpリクエストをポート80に送信します。だから私はサーバーでiptablesを使用し、リクエストをポート8080にリダイレクトしています。見つける価値がないようです。

だからapache-tomcatの仮想ホスティングについて聞いて、それが解決策だと言いました。

光を見せてください!

答え1

私が理解したのは、ポート80のApacheからポート8080で実行されているTomcatアプリケーションサーバーにポートリダイレクトを要求し、Apacheがhttpヘッダーのポートをブロックするようにすることで、ユーザーがポートに明示的にポートを入力することを許可します。必要がないようにします。参照URL番号。これには、同じホスト上で実行されているApacheとTomcatアプリケーションサーバー間のアプリケーションブリッジが必要です。ホストシステムでApache仮想ホストをホストしていると仮定すると、dnsアプリケーションはCNAMEホストシステムを指すように設定する必要があります。

さまざまな方法でこれを実行できます。特別な順序のないこれらの方法の1つ(ただし、設定が比較的簡単になる可能性があります)

  • mod_rewriteとmod_proxy Apacheモジュール。設定が簡単です。 httpd設定のみが関連しています。仮想ホストに送信されたhttpトラフィックをポート80のtomcat httpサーバーに書き換えるプロキシロールのみを実行します。これまでは、管理的観点から見ると、これはとてもきれいでシンプルだと思います。 server.xmlファイルの更新は、Tomcatのインストールを担当する開発者/アプリケーション管理者に任せます。

    引用:http://tomcat.apache.org/tomcat-5.5-doc/proxy-howto.html 例:

    <VirtualHost *:80>
    ServerName yourapp.yourdomain.com
    ServerAlias yourapp.*        
    ProxyRequests Off
    ProxyPreserveHost On     
    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>     
    ProxyPass /webapp http://localhost:8080/webapp
    ProxyPassReverse /webapp http://localhost:8080/webapp    
    <Location /webapp>
      Order allow,deny
      Allow from all
    </Location>        
    </VirtualHost>
    
  • Apache で JSP を実行するには、mod_jk2 モジュールを使用します。中程度の硬さ。 httpd設定に複雑なパラメータ設定を含めると、同じ仮想ホストがTomcatサーバーにトラフィックを渡すのではなく、別のスクリプト(php / perl / cgiなど)を実行する必要がある場合に便利です。このリンクには良いHOWTOがあります。

    引用:

    http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html

    http://people.apache.org/~mturk/docs/article/ftwai.html

    http://www.mulesoft.com/apache-tomcat-mod-jk-connector-configuration

  • Apache mod_proxy_ajpモジュールを介したJSPの実行:上記の方法と似ていますが、一貫性のために、このモジュールはhttp通信ではなくajpプロトコルを使用してtomcatと通信します。

    引用:

    https://confluence.sakaiproject.org/display/~steve.swinsburg/Fronting+Tomcat+with+Apache+via+mod_proxy_ajp

  • ホストのネットワーク層でこの問題を解決します。iptablesポート80からのすべての着信トラフィックをポート8080のデフォルトバインディングにリダイレクトするために使用されます。 iptablesの設定を理解し管理する方法について説明します。ワンタイム設定ですがメンテナンスが難しいです。virtualhosts同じシステムで別のApacheをホストする必要がある場合は、問題が発生する可能性があります。

例:

iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A OUTPUT -d $(/bin/hostname) -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -d $(/bin/hostname) -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables-save

答え2

DNS はホスト名を IP アドレスに関連付けます。特定のポートについては何も知りません。 URLにポートを指定しないと、ブラウザはポート80でDNSによって返されたIPアドレスに接続します。 iptables を使用してポート 80 をポート 8080 にリダイレクトするのが正しい解決策です。

関連情報