Tomcat Manager Uygulamasına farklı ana bilgisayardan erişin


95

Tomcat 9'u uzak bir sunucuya yükledim ve başlattıktan sonra iyi bir hale getirildi, http: // host_name: port_num'a erişebilir ve tomcat merhaba sayfasını görebilirim. Ancak, dağıtılmış uygulamalarımı görmek için yönetici uygulamasını açmaya çalıştığımda, 403 erişimi reddedildi, tomcat user xml'de aşağıdaki gibi roller ekliyorum:

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

Gördüğüm hata mesajları:

Varsayılan olarak, Ana Bilgisayar Yöneticisine yalnızca Tomcat ile aynı makinede çalışan bir tarayıcıdan erişilebilir. Bu kısıtlamayı değiştirmek isterseniz, Ana Bilgisayar Yöneticisinin context.xml dosyasını düzenlemeniz gerekir.

Context.xml dosyasını nasıl değiştirmeli ve yönetici uygulamasına nasıl erişmeliyim?

Yanıtlar:


143

Dağıtılan her web uygulamasının içinde bulunan bir context.xmldosyası vardır.

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

(conf/Catalina/localhost by default)

ve web uygulaması ile aynı ada sahiptir ( manager.xmlbu durumda). Dosya yoksa, varsayılan değerler kullanılır.

Bu nedenle, bir dosya oluşturmanız conf/Catalina/localhost/manager.xmlve uzaktan erişime izin vermek istediğiniz kuralı belirlemeniz gerekir . Örneğin, aşağıdaki içerik manager.xmltüm makinelerden erişime izin verecektir:

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

ValveElemanın allow özniteliğinin , bağlanan ana bilgisayarın IP adresiyle eşleşen normal bir ifade olduğunu unutmayın. Diğer Valvesınıflar, diğer kurallara hizmet eder (örneğin RemoteHostValve, eşleşen ana bilgisayar adları için).

Yukarıdaki değişiklikler yapıldıktan sonra, yönetici URL'sine erişirken size bir kimlik doğrulama iletişim kutusu sunulmalıdır. Sağladığınız ayrıntıları girerseniz tomcat-users.xml, Yöneticiye erişiminiz olmalıdır.


tomcat'i kapatmadan ve başlatmadan bu yapılandırma değişikliklerini yüklemek için ne yapılmalıdır?
Kuldeep Yadav

403 Erişim Engellendi
Damir Olejar

3
Tomcat 8'de hiçbir şey yapmanıza gerek yoktur, bu konfigürasyon değişiklikleri hemen yürürlüğe girer.
Ayushya

3
Birkaç denemeden sonra nihayet benim için çalıştı. Değişiklikler "conf / Catalina / localhost" manager.xml dosyasında yapılırken context.xml dosyasında değişiklik yapmaya çalışıyordum. Eğer yoksa, sadece bir tane oluşturmanız gerekir.
jellboi

Tomcat 8.5.37 için şunu da eklemem gerekiyordu: <Valve className = "org.apache.catalina.valves.RemoteIpValve" />
Md.

152

Tomcat v8.5.4 ve üstü için dosya <tomcat>/webapps/manager/META-INF/context.xmlayarlandı:

<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>

Aşağıdakileri yorumlamak için bu dosyayı değiştirin 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>

Bundan sonra, tarayıcınızı yenileyin (Tomcat'i yeniden başlatmanız gerekmez), yönetici sayfasını görebilirsiniz.


8.5.0'da çalışıyor ancak yeniden başlatma gerekiyordu. Teşekkürler!
JRichardsz

1
Yaklaşık 10-15 saniye beklemek zorunda kaldım, ancak 8.5.11'de yeniden başlatmaya gerek yok. Teşekkürler!
Karl Henselin

1
8.5.9'da yeniden başlatmadan çalıştı. Ancak, Windows 7 makinesine başvurmak yaklaşık 15 saniye sürdü. Teşekkürler!
cbmeeks

403 Erişim Engellendi
Damir Olejar

1
Tomcat'e yeni başlayanlar için, bu soruyla ilgili önemli bir gerçek, Tomcat'in birden fazla context.xmldosya tüketmesidir . Tomcat'in varsayılan hata sayfasındaki , Yöneticinin context.xml dosyasını düzenlemeye yönelik talimatlar , Yönetici uygulamasının dizinindeki context.xml dosyasını düzenlerken
CODE-REaD

11

Tomcat yöneticisine farklı bir makineden erişmek için aşağıdaki adımları izlemelisiniz:

1. conf / tomcat-users.xml dosyasını kullanıcı ve bazı rollerle güncelleyin :

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

Burada yönetici kullanıcı roller = "yönetici-gui, yönetici-komut dosyası, yönetici-jmx, yönetici-durumu" atamaktadır .

İşte tomcat kullanıcısı ve şifresi: admin

2. webapps / manager / META-INF / context.xml dosyasını güncelleyin (IP adresine izin verilir) :

Varsayılan yapılandırma :

<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" />
  
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

Burada Valve'de 127. \ d +. \ D +. \ D + ile başlayan yerel makine IP'sine izin veriyor .

2.a: Spesifik IP'ye izin ver :

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|YOUR.IP.ADDRESS.HERE" />

Burada sadece | YOUR.IP.ADDRESS.HERE yerine IP adresinizi yazın

2.b: Tüm IP'ye izin ver :

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow=".*" />

Burada allow = ". *" Kullanarak tüm IP'ye izin vermiş olursunuz.

Teşekkürler :)


Lütfen olumsuz oylama için belirli bir neden ekleyin. Bu cevap yanlış görünüyorsa lütfen açıklayınız. Açıklamanızdan sonra bilgimi geliştirebilirim. Teşekkürler
Md. Sajedul Karim

tek bir ip'e erişime izin vermek yerine, varsayılan dosya ile aynı sözdizimini kullanarak bir ağdaki tüm iplere erişim ekleyebilirsiniz: <Valve className = "org.apache.catalina.valves.RemoteAddrValve" allow = "127 \. \ d + \. \ d + \. \ d + | :: 1 | 0: 0: 0: 0: 0: 0: 0: 1 | 192 \ .168 \ .250 \. \ d + "/> yerel ağdaki ana bilgisayarlar 192.168.250.0/24
Thomas LIMIN

2
Bu cevap sadece bir belirttiğini YOUR.IP.ADDRESS.HERE- ve böylece gerçekten dan yöneticisi uygulamaya erişmek için soru cevaplar bir değil, sadece internet üzerinden herhangi bir yerden, farklı konak. IMHO bu daha ziyade kabul edilen cevap olmalıdır. İyileştirme önerisi: 2.a'yı en üste taşıyın, isteğe bağlı olarak @ ThomasLIMIN'in önerisini ekleyin.
Olaf Kock

3
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"/>

Bu cevap bu soruyla uyuşmuyor
袁文涛
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.