特定虚拟主机

时间:2015-11-30 03:52:00

标签: tomcat virtualhost tomcat8

我有两个虚拟主机,每个主机都部署了管理器应用程序。 在Tomcat 8.0 \ conf \ tomcat-users.xml中还添加了具有manager-gui角色的用户 该用户可以访问主机的管理员应用程序。有没有办法将经理用户限制在特定的主机上?

2 个答案:

答案 0 :(得分:0)

您可以为Realm

中的每个上下文定义[tomcat_home]/conf/Catalina/[hostname]/manager.xml
<Context docBase="${catalina.home}/webapps/manager">

    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="userDatabase_2"/>

<Context>

然后在server.xml中为每个上下文添加一个指向备用tomcat-users.xml文件的额外资源:

<Resource name="userDatabase_2" auth="Container"
          type="org.apache.catalina.UserDatabase"
          description="another user database"
          factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
          pathname="/conf/tomcat-users-2.xml" />

我必须承认我没有彻底测试过这个。尽管它可能有用,但并不建议在生产系统上使用UserDatabaseRealm。

如果您希望使用DataSourceRealm进行基于表单的身份验证,则可以更改login-config中的[tomcat_home]/webapps/host-manager/WEB-INF/web.xml以使用基于FORM的身份验证并包含数据源{{1}在Resource元素中。 https://tomcat.apache.org/tomcat-8.0-doc/realm-howto.html

答案 1 :(得分:0)

首先,在tomcat-users-2.xml中创建一个新的用户xml数据库文件,让我们称之为tomcat-users-2.xml

将以下条目添加到<?xml version='1.0' encoding='utf-8'?> <tomcat-users> <user username="[$yourUsername]" password="[$yourPassword]" roles="tomcat,manager-gui"/> </tomcat-users> 文件中:

<tomcat-users>

请注意,您可以在[tomcat_home]/conf/server.xml

中添加多个用户标签

然后在<GlobalNamingResources>文件中,找到<Resource name="UserDatabase2" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users-2.xml" /> 标记并添加(在其中):

<Host ...></Host>

将以下代码放在要限制用户的应用的<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase2"/>标记内:

{{1}}

最后,您必须重新启动Tomcat才能使更改生效。