1. ホーム
  2. tomcat

[解決済み] Tomcat Managerアプリに別ホストからアクセスする

2022-10-17 17:37:03

質問

リモート サーバーに tomcat 9 をインストールし、起動すると、正常に表示され、次のようにアクセスすることができます。 http://host_name:port_num にアクセスし、tomcat の Hello ページを見ることができます。しかし、デプロイされたアプリを見るためにマネージャーアプリを開こうとすると、403 access denied と表示されます。

<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="admin"/>
<user username="user" password="password" roles="admin,manager,manager-gui"/>

私が見たエラーメッセージは

デフォルトでは、ホストマネージャはTomcatと同じマシン上で動作するブラウザからしかアクセスできません。この制限を変更したい場合は、ホスト・マネージャの context.xml ファイルを編集する必要があります。

どのように context.xml ファイルを変更し、マネージャアプリにアクセスできるようにすればよいのでしょうか。

どのように解決するのですか?

デプロイされた各ウェブアプリには context.xml ファイルがあり、それは

$CATALINA_BASE/conf/[enginename]/[hostname]

(conf/Catalina/localhost by default)

で、ウェブアプリと同じ名前( manager.xml と同じ名前です)。 ファイルが存在しない場合は、デフォルト値が使用されます。

そこで、ファイル conf/Catalina/localhost/manager.xml を作成し、リモートアクセスを許可するルールを指定します。 例えば、以下のような内容の manager.xml は、すべてのマシンからのアクセスを許可します。

<Context privileged="true" antiResourceLocking="false" 
         docBase="${catalina.home}/webapps/manager">
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^YOUR.IP.ADDRESS.HERE$" />
</Context>

のallow属性に注意してください。 Valve 要素の allow 属性は接続するホストの IP アドレスにマッチする正規表現であることに注意してください。 ですから、あなたの IP アドレスを YOUR.IP.ADDRESS.HERE (または他の有用な表現) に置き換えてください。

その他 Valve クラスは他の規則に対応します (例. RemoteHostValve でホスト名のマッチングを行うなど)。 Tomcat の以前のバージョンでは、IP アドレスのマッチングに org.apache.catalina.valves.RemoteIpValve というバルブ クラスを使用します。

上記の変更が行われると、マネージャの URL にアクセスする際に認証ダイアログが表示されるようになります。 で提供した詳細を入力すると tomcat-users.xml に入力すると、マネージャにアクセスできるはずです。