Tomcatサーバーをデプロイして、2つのポートを同時にリッスンするようにします(両方ともhttpプロトコルの場合)。
この要件correcltyを確実に理解するために、サーバーインスタンスは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をリッスンするようにセットアップされます。
documenation の状態:
port:TCPこのコネクタがサーバーソケットを作成し、着信接続を待機するポート番号。オペレーティングシステム1つのサーバーアプリケーションのみが特定のIPアドレスの特定のポート番号をリッスンできるようにします特別な値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>
別のポートでTomcatを実行します。 server.xmlファイルのサービスタグ内の4つの項目を変更する必要があります
Tomcatを実行しているユーザーを確認してください。特権ポートで使用する場合は、rootユーザーで使用する必要があります。
もう1つできることは、iptablesでポート80を8080にリダイレクトすることです。このようなもの:
iptables -t nat -A PREROUTING -d 192.168.10.16 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
それが役に立てば幸い