2つのポートで同時にリッスンするようにTomcatサーバーを展開したいと考えています(両方ともhttpプロトコル用)。
この要件を正しく理解していることを確認するために、サーバー インスタンスは 1 つしかありませんが、HTTP プロトコルを 2 つのポートでリッスンしたいと考えています。たとえば、ポート番号 7080 および 8080 を使用して、サーバーにデプロイされたアプリケーションに誰でもアクセスできます。
それは可能ですか?可能であれば、どうすればこれを達成できますか?
とても簡単です。必要なconf/server.xml
ポートの新しいコネクタを追加するには、構成ファイルを確認するだけです。たとえば、次のようなコネクタがあるとします。
<Connector port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
構成ファイルに上記と同じ新しいコネクタを追加するだけですが、ポート パラメータを変更します。それで全部です。再起動して完了です。
はい、可能です。server.xml (conf という名前のフォルダーにあります) を次のように編集するだけです。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444" />
これにより、Tomcat がポート8080と8081の両方をリッスンするようにセットアップされます。
ドキュメントには次のように記載されています。
port:このコネクタがサーバー ソケットを作成し、着信接続を待機する TCP ポート番号。ご使用のオペレーティング システムでは、特定の IP アドレスの特定のポート番号をリッスンできるサーバー アプリケーションは 1 つだけです。特別な値 0 (ゼロ) を使用すると、Tomcat はこのコネクタに使用する空きポートをランダムに選択します。これは通常、組み込みおよびテスト アプリケーションでのみ役立ちます。
redirectPort:このコネクタが非 SSL 要求をサポートしており、照合<security-constraint>
に SSL トランスポートが必要な要求を受信した場合、Catalina はその要求をここで指定されたポート番号に自動的にリダイレクトします。
そのため、このようなリダイレクトをどのように機能させたいかによって、redirectPort の変更はオプションです。
/conf/server.xml で 2 つの異なるサービスを定義できます。
例は以下のとおりです。
<Service name="Catalina_2">
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />
<Engine name="Catalina_2" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps_2" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
注: Tomcat のヒープ サイズを増やす必要がある場合があります。
server.xml で次のコードを指定できます。
<Service name="sample">
<Connector port="81" protocol="HTTP/1.1" maxThreads="100" connectionTimeout="2000"/>
<Engine name="sample" defaultHost="sample">
<Host name="myhostname" appBase="webapp2">
<Context docBase="C:\websites\sample\" />
</Host>
</Engine>
</Service>