Доступ к приложению Tomcat Manager с другого хоста
Я установил tomcat 9 на удаленном сервере и после его запуска, он был хорошо воспроизведен, я могу получить доступ к http://host_name:port_num и посмотреть страницу приветствия tomcat. Но когда я пытаюсь открыть приложение-менеджер, чтобы увидеть мои развернутые приложения, я получаю доступ 403, я уже добавляю роли в tomcat user 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 и получить доступ к приложению менеджера?
Ответы
Ответ 1
Каждый развернутый webapp имеет файл context.xml
, который живет в
$CATALINA_BASE/conf/[enginename]/[hostname]
(conf/Catalina/localhost by default)
и имеет то же имя, что и webapp (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>
Обратите внимание, что атрибут allow элемента Valve
является регулярным выражением, которое соответствует IP-адресу соединительного узла. Другие классы Valve
удовлетворяют другим правилам (например, RemoteHostValve
для сопоставления имен хостов).
После внесения указанных изменений вы должны получить диалоговое окно проверки подлинности при обращении к URL-адресу менеджера. Если вы введете данные, которые вы предоставили в tomcat-users.xml
, у вас должен быть доступ к Менеджеру.
Ответ 2
Для 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), вы можете увидеть страницу менеджера.
Ответ 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"/>
Ответ 4
Чтобы получить доступ к диспетчеру tomcat с другого компьютера, выполните следующие действия:
1. Обновите файл conf/tomcat-users.xml с пользователем и некоторыми ролями:
<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"/>
Здесь администратор назначает role = "manager-gui, manager-script, manager-jmx, manager-status".
2. Обновите файл webapps/manager/META-INF/context.xml (разрешающий IP-адрес):
Конфигурация по умолчанию:
<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>
Здесь, в Valve, разрешено запускать только IP-адрес локального компьютера с 127.\d+.\d+.\d+.
2.a: разрешить специальный IP:
<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" />
Здесь вы просто замените | YOUR.IP.ADDRESS.HERE своим IP-адресом
2.b: разрешить все IP:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow=".*" />
Здесь, используя allow = ". *", вы разрешаете все IP.
Спасибо :)