web-dev-qa-db-ja.com

別のホストからTomcat Manager Appにアクセスする

Tomcat 9をリモートサーバにインストールしましたが、起動後、正常に起動しました。 http:// Host_name:port_num にアクセスしてTomcat helloページを参照できます。しかし、デプロイされたアプリを見るためにマネージャアプリを開こうとすると、403アクセスが拒否されます。Tomcatユーザーxmlにすでに次のようにロールを追加しています。

<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ファイルを変更してマネージャアプリにアクセスするにはどうすればよいですか?

67
feichangh

デプロイされた各Webアプリケーションには、次の場所にあるcontext.xmlファイルがあります。

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

(conf/Catalina/localhost by default)

webアプリケーションと同じ名前(この場合は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="^.*$" />
</Context>

Valve要素のallow属性は、接続しているホストのIPアドレスと一致する正規表現です。他のValveクラスは他の規則を満たします(例えば、一致するホスト名のRemoteHostValve)。

上記の変更が行われると、マネージャのURLにアクセスすると認証ダイアログが表示されます。あなたがTomcat-users.xmlにあなたが提供した詳細を入力するならば、あなたはマネージャへのアクセスを持つべきです。

122
Matt Innes

Tomcat v8.5.4以降では、ファイル<Tomcat>/webapps/manager/META-INF/context.xmlが調整されました。

<Context antiResourceLocking="false" privileged="true" >
    <Valve className="org.Apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>

このファイルを変更してValveをコメントアウトします。

<Context antiResourceLocking="false" privileged="true" >
    <!--
    <Valve className="org.Apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
    -->
</Context>

その後、ブラウザを更新してください(Tomcatを再起動する必要はありません)。マネージャのページを見ることができます。

132
jqgsninimo
Following two configuration is working for me.

1 .Tomcat-users.xml details
--------------------------------
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>
  <role rolename="admin-gui"/>
  <role rolename="admin-script"/>
  <role rolename="Tomcat"/>


  <user  username="Tomcat"  password="Tomcat" roles="Tomcat"/>

  <user  username="admin"  password="admin" roles="admin-gui"/>

  <user  username="adminscript"  password="adminscrip" roles="admin-script"/>

  <user  username="Tomcat"  password="s3cret" roles="manager-gui"/>
  <user  username="status"  password="status" roles="manager-status"/>

  <user  username="both"    password="both"   roles="manager-gui,manager-status"/>

  <user  username="script"  password="script" roles="manager-script"/>
  <user  username="jmx"     password="jmx"    roles="manager-jmx"/>

2. context.xml  of <Tomcat>/webapps/manager/META-INF/context.xml and 
<Tomcat>/webapps/Host-manager/META-INF/context.xml
------------------------------------------------------------------------
<Context antiResourceLocking="false" privileged="true" >

  <Valve className="org.Apache.catalina.valves.RemoteAddrValve"
         allow=".*" />
  <Manager sessionAttributeValueClassNameFilter="Java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.Apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|Java\.util\.(?:Linked)?HashMap"/>
1
Rajeev kumar