Tomcatの各ポートの機能の詳細な説明

Tomcatの各ポートの機能の詳細な説明

tomcat 設定ファイルから、tomcat の起動時にデフォルトで 8080 (8443)、8009、8005 の 3 つのポートが開始されることがわかります。

ポート 8080 (8443)

<コネクタ ポート="80" プロトコル="HTTP/1.1"
   接続タイムアウト = "20000"
   リダイレクトポート="8443" />

これは私たちが最もよく知っているものでしょう。日常的な開発やテストでよく使用されます。コネクタは、ブラウザから送信されたリクエストをリッスンするために使用されます。これを 80 に設定すると、http://localhost を使用して直接アクセスできます。

http プロトコルredirectPortは、https 要求が送信される場合、要求がポート 8443 に送信されることを意味します。

8443 はデフォルトの https リスニング ポートですが、デフォルトでは有効になっていません。これを有効にするには、Tomcat には独自の証明書が付属していないため、コメントを解除するだけでなく、自分で証明書を生成して指定する必要があります。

ポート 8009

<コネクタ ポート="8009" プロトコル="AJP/1.3" リダイレクト ポート="8443" />

Nginx、Apache などを Tomcat のリバース プロキシとして使用する場合は、ajp プロトコルを使用してこのポートにリバース プロキシすることができます。
ポート 8080 への http リバース プロキシを使用することが多いですが、ajp は通常、tcp 接続を確立した後、長時間それを維持するため、tcp の接続と切断を繰り返す Http のオーバーヘッドが削減されるため、リバース プロキシでは http よりも ajp の方が効率的です。

ポート 8005

<サーバーポート="8005" シャットダウン="シャットダウン">

Tomcat がリッスンするシャットダウン ポートは、このポートが Tomcat をシャットダウンする要求をリッスンする役割を担っていることを意味します。

Tomcat をシャットダウンするために、 shutdown.shを実行すると、ポート 8005 に接続し、 SHUTDOWNコマンドを実行します。そのため、telnet を直接使用してポート 8005 でSHUTDOWNを実行し、Tomcat をシャットダウンします。これも、よりオーソドックスなシャットダウン方法です。このポートが監視されていない場合、sh スクリプトは無効です。

実際、ポート 8005 と 8009 は必要ありません。特に、SHUTDOWN はデフォルトで 127.0.0.1 をリッスンするためです。ただし、このポートに接続してSHUTDOWN送信すると、検証なしで Tomcat がシャットダウンされる可能性があり、セキュリティ リスクが生じます。

AJP ポートは、Apache が Tomcat に接続するなど、アプリケーション サーバーと対話するために使用されます。通常、開発中には使用されないため、無効にすることができます。

無効化方法:

AJP ポートの場合は、server.xml ファイル内の構成行をコメント アウトするだけです。

SHUTDOWN ポートはサーバーパラメータに書き込まれます。直接削除すると役に立たなくなります。また、デフォルトで起動されます。一般的には、セキュリティ設定時にポートを別のポートに変更し、SHUTDOWN を他の複雑な文字列に変更することをお勧めします。

実際、このポートは直接ブロックされ、リッスンされないようにすることができます。設定するときは、ポート値を -1 に変更するだけです。

<サーバーポート="-1" シャットダウン="シャットダウン">

server.xml 構成ファイル

<!-- 属性の説明 port: Tomcat をシャットダウンするための要求を待機するポートを指定します。shutdown: サーバーをシャットダウンするために上記のポートに送信されるコマンド文字列 -->
<サーバーポート="8005" シャットダウン="シャットダウン">

 <リスナークラス名="org.apache.catalina.core.AprLifecycleListener" />
 <リスナークラス名="org.apache.catalina.mbeans.ServerLifecycleListener" />
 <リスナークラス名="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
 <リスナークラス名="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>

 <グローバル命名リソース>
 <環境名="simpleValue" タイプ="java.lang.Integer" 値="30"/>
 <リソース名="UserDatabase" auth="コンテナ"
  タイプ="org.apache.catalina.UserDatabase"
  description="更新および保存できるユーザーデータベース"
  ファクトリー="org.apache.catalina.users.MemoryUserDatabaseFactory"
  パス名="conf/tomcat-users.xml" />
 </グローバル命名リソース>

 <サービス名="Catalina">
 <!--
  コネクタ要素:
  コネクタ インターフェイスによって定義されます。<Connector> 要素は、クライアント プログラムと実際に対話するコンポーネントを表します。クライアント要求を受信し、応答結果をクライアントに返す役割を担います。

  属性の説明:
  port: 指定されたポートでクライアントからの要求をリッスンするサーバー コネクタのポート番号。
  enableLookups: true の場合、request.getRemoteHost() を呼び出して DNS クエリを実行することで、リモート クライアントの実際のホスト名を取得できます。false の場合、DNS クエリは実行されませんが、IP アドレスが返されます。
  redirectPort: HTTP 要求の処理中に SSL トランスポート要求を受信した後、サーバーがリダイレクトするポート番号。
  acceptCount: リクエストを処理するために使用可能なスレッドがすべて使用された場合に、処理キューに配置できるリクエストの数。この数を超えるリクエストは処理されず、接続拒否エラーが返されます。
  connectionTimeout: タイムアウトを待機するミリ秒数。
  maxThreads: ポートでリッスンするスレッドの最大数を設定します。この値によって、サーバーが同時に応答できるクライアント要求の最大数も決まります。デフォルト値は 200 です。
  プロトコル: AJP/1.3 プロトコルに設定する必要があります。
  address: サーバーに 2 つ以上の IP アドレスがある場合、このプロパティでポートがリッスンする IP アドレスを設定できます。デフォルトでは、ポートはサーバー上のすべての IP アドレスをリッスンします。
  minProcessors: サーバーがリクエストの処理を開始するときに作成されるスレッドの数。各リクエストは 1 つのスレッドによって処理されます。
  maxProcessors: リクエストを処理するために作成できるスレッドの最大数。
  minSpareThreads: 最小の予備スレッド。
  maxSpareThreads: 最大予備スレッド数。
  デバッグ: ログ レベル。
  enableUploadTimeout: アップロード タイムアウトを無効にします。主に大容量のデータをアップロードするために使用されます。
 -->
 <コネクタポート="8080" maxHttpHeaderSize="8192"
    最大スレッド数="150" 最小スペアスレッド数="25" 最大スペアスレッド数="75"
    enableLookups="false" リダイレクトポート="8443" 受け入れカウント="100"
    接続タイムアウト="20000" アップロードタイムアウトを無効に="true" />


 <!-- 他の HTTP サーバーとの接続を確立する役割を担います。このコネクタは、Tomcat を他の HTTP サーバーと統合するときに必要です。 -->
 <コネクタポート="8009" 
    enableLookups="false" リダイレクトポート="8443" プロトコル="AJP/1.3" />


 <!-- 
  各 Service 要素には、Engine 要素を 1 つだけ含めることができます。この要素は、同じ <Service> 内のすべての <Connector> 要素によって受信されたクライアント要求を処理します。属性の説明:
  name: $CATALINA_HOME/config/Catalina の Catalina に対応します。
  defaultHost: Host 要素の name 属性に対応します。つまり、$CATALINA_HOME/config/Catalina/localhost の localhost は、リクエストを処理するためのデフォルトの仮想ホスト名で、少なくとも 1 つの Host 要素の name 属性と同じ値を持ちます。debug: ログ レベル -->
 <エンジン名="Catalina" defaultHost="localhost">

  <レルムクラス名="org.apache.catalina.realm.UserDatabaseRealm"
    リソース名="ユーザーデータベース"/>
  <!--
  Host インターフェイスによって定義されます。Engine 要素には複数の <Host> 要素を含めることができます。
  各 <Host> 要素は仮想ホストを定義します。これには 1 つ以上の Web アプリケーションが含まれます。

  属性の説明:
   name: この例では、$CATALINA_HOME/config/Catalina/localhost 内の localhost 仮想ホスト名として常に強調表示されます。debug: ログのデバッグ レベルです。appBase: デフォルトのアプリケーション パス。つまり、アプリケーションをディレクトリに配置し、autoDeploy が true の場合にアプリケーションを自動的にデプロイします。このパスは、$CATALINA_HOME/ (Web アプリケーションのベース ディレクトリ) からの相対パスです。
   unpackWARs: Web アプリケーションが *.war の場合に WAR ファイルを解凍するには、true に設定します。true の場合、Tomcat は WAR ファイルを自動的に解凍します。それ以外の場合は、WAR ファイルから直接アプリケーションを解凍して実行しません。
   autoDeploy: デフォルト値は true です。つまり、新しい Web アプリケーションが appBase に配置され、Tomcat が実行されている場合、アプリケーションは自動的にロードされます。
  <ホスト名="localhost" appBase="webapps"
   unpackWARs="true" autoDeploy="true"
   xmlValidation="false" xmlNamespaceAware="false">
  <!-- 
   属性の説明:
   path: アクセス URI (例: http://localhost/ はアプリケーションのルート ディレクトリであり、このアプリケーションへのアクセスは http://localhost/demm を使用して行われます)。この要素は必須です。
    コンテキストを一致させるために使用される、この Web アプリケーションの URL プレフィックスを示します。要求された URL は http://localhost:8080/path/* の形式です。
   docBase: WEB アプリケーションのディレクトリ。このディレクトリは、Java WEB アプリケーション仕様、Web アプリケーション ファイルの保存パス、または WAR ファイルの保存パスに準拠している必要があります。
   debug: ログレベル reloadable: プログラムが変更されたときにリロードするかどうか。true に設定するとパフォーマンスに影響しますが、変更されたファイルを自動的に読み込むことができます。
    true の場合、Tomcat はホットデプロイメントをサポートし、Web アプリケーションの /WEB-INF/lib および /WEB-INF/classes ディレクトリの変更を自動的に検出します。
    新しいJSPとサーブレットを自動的にロードし、Tomcatを再起動せずにWebアプリケーションを変更できます。
  -->
  <コンテキスト パス="/demm" docBase="E:\\projects\\demm\\WebRoot" デバッグ="0" 再ロード可能="true"></コンテキスト>
  </ホスト>
 </エンジン>
 </サービス>
</サーバー>

Tomcatの各ポートの機能についての詳細説明はこれで終了です。Tomcatのポートの機能についてさらに詳しく知りたい方は、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • LinuxでTomcatのポート番号を変更する方法
  • IDEA が Tomcat ポートを占有し始める理由と解決策の詳細な説明 (デバッグ モードを使用)
  • Tomcat サービスのポート設定を変更する方法
  • MyEclipse で Tomcat 6.x のポート番号を変更する方法
  • Tomcatのデフォルトポート番号8080を変更する方法
  • Tomcatはポート8080が占有されていることを示しています。グラフィカルなソリューション

<<:  vuex名前空間の使用

>>:  MySQLメモリストレージエンジンに関する知識

推薦する

「@INC で ExtUtils/MakeMaker.pm が見つかりません」というエラーを解決する

mha4mysql をインストールする場合の手順は、おおよそ次のようになります: unzip、per...

Ubuntu 20.04 に Python 3 仮想環境をインストールする詳細なチュートリアル

以下はすべて仮想マシン上で実行されます1. pip3をインストールするsudo apt で pyth...

Ubuntu で起動時に自動的に起動するシェル スクリプトを作成する (推奨)

スクリプトを書く目的は、さまざまなサービスを手動で起動しなくて済むようにすることです(怠惰のためでも...

Linux で g++ を使用してプログラムをコンパイルする際の -I (大文字の i)、-L (大文字の l)、-l (小文字の l) の機能の詳細な説明

初心者の Linux ユーザーとして、私は単純なgcc/g++操作を何度も使用してきましたが、少し複...

圧縮パッケージを使用して Linux 環境に JDK 13 をインストールする方法

JDK とは何ですか?まあ、この質問がわからないのであれば、なぜこれをインストールするのか本当にわか...

CentOS 7 で MySQL 5.7 をインストールして設定する

この記事では、以下の環境をテストします。 CentOS 7 64 ビット 最小 MySQL 5.7 ...

フレームセットの共通プロパティ(フレームとウィンドウの分割)

フレームとは、Web ページ画面を複数のフレームに分割したもの(複数の Web ページという形で表示...

MySQL ストレージ エンジン MyISAM と InnoDB の違いの概要

1. MySQLのデフォルトストレージエンジンの変更MySQL 5.1 より前のバージョンでは、デフ...

トークンの有効期限が切れたときにページを更新するときに繰り返しプロンプトが表示されないようにする Vue について

トークンの有効期限が切れたら、ページを更新します。ページの読み込み時にバックエンドに複数のリクエスト...

Mysql 文字列の傍受と指定された文字列内のデータの取得

序文: 正規表現のインターセプションに似た、MySql フィールドの文字列から特定の文字を抽出すると...

Alibaba Cloud SSHリモート接続がしばらくすると切断される問題を解決

問題の再現Alibaba Cloud Server は、Finalshell リモート接続を使用して...

vue-cropper コンポーネントは画像の切り取りとアップロードを実現します

この記事では、画像の切り取りとアップロードを実装するためのvue-cropperコンポーネントの具体...

イメージのパッケージ化とワンクリック展開を実現するためにDockerを組み合わせたアイデア

1. サーバーにDockerをインストールする yumでdockerをインストール設定ファイルを変更...

JS配列メソッドsome、every、findの使用に関する詳細

目次1. いくつか2. すべての3. 見つける1. いくつかsome()メソッドは、指定された関数の...

Dockerコンテナのインポ​​ートとエクスポートに関するチュートリアル

背景Docker の人気は、コンテナの共有と移植が容易であることと密接に関係しています。ユーザーは、...