Tomcat 自定义用户目录介绍

在介绍 tomcat 自定义用户目录前,我们先看看一个例子。假如张三自己搭建了一个网站A,然后张三好朋友李四和王五看见张三的网站很不错,也想在张三网站上面编辑和发表一些网页。于是,张三在服务器上为李四和王五分别创建了一个目录,这些目录用来专门存放李四和王五的网页,并且李四和王五不能互相访问对方的目录。如下图:

上图中,张三可以通过 http://ip:port/index.html 地址访问网站的主页,通过 http://ip:port/~李四/lisi.html 访问李四的 lisi.html 页面,通过 http://ip:port/~王五/wangwu.html 访问王五的 wangwu.html 网页。

注意:url 地址中的波浪线(~)字符加上用户名作为该用户网站的虚拟路径。

tomcat 对自定义用户目录支持

在 tomcat 中,使用了几个特殊的 <Listener> 元素,提供两种方式将其映射到每个主机上。<Listener> 的 className 属性应为 org.apache.catalina.startup.UserConfig,而 userClass 属性则指定众多映射类中的一种,directoryName 属性指定用户自定义目录名称,homeBase 属性指定映射目录的公共父目录名称。

第一种方式:每个用户创建一个系统账号

如果你的操作系统是 Unix / Linux,并且运行 tomcat 的账号可读取标准的 /etc/passwd 文件,而且 tomcat 自定义用户目录为每个用户主目录,则使用 PasswdUserDatabase 映射类:

<Listener className="org.apache.catalina.startup.UserConfig"
    directoryName="public_html"
    userClass="org.apache.catalina.startup.PasswdUserDatabase" />

具体实现方式请参考Linux 下 Tomcat 自定义用户目录1

第二种方式:不为每个用户创建系统账号

如果你没有 /etc/passwd 口令文件,但想要从用户名映射至公共父目录的子目录,则使用 HomesUserDatabase 类:

<Listener className="org.apache.catalina.startup.UserConfig"
    directoryName="public_html"
    homeBase="/opt"
    userClass="org.apache.catalina.startup.HomesUserDatabase" />

具体实现方式请参考Linux 下 Tomcat 自定义用户目录2

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号