使用Knox做http代理代理Tomcat服务器
Knox可以代理任何http服务或者web app,不仅仅局限于代理hadoop的服务或者web应用/界面。
例如,你可以把tomcat装在一台机器上,然后把knox装在另一台机器上或者跟tomcat相同的机器上。knox就可以作为代理,作为通向tomcat的访问点。
- 下载并安装knox 0.6.0或者以上版本。
http://mirror.bit.edu.cn/apache/knox/0.6.0/knox-0.6.0.zip
解压后,先运行knox/bin/knoxcli create-master 来创建密码,再运行knox/bin/ldap start 启动ldap,最后运行knox/bin/gateway来启动knox服务器. - 下载并安装Tomcat,最新版本或者以前版本都可以.(需要注意的是tomcat9需要java8以上版本)
http://apache.fayea.com/tomcat/tomcat-9/v9.0.0.M1/bin/apache-tomcat-9.0.0.M1.zip
解压后,到tomcat/bin目录运行startup [Windows运行startup.bat ,Linux运行startup.sh]
tomcat默认端口号是8080,如果要修改可到tomcat/conf/server.xml中找到Connector port=”8080”这一行将8080改为其他值. - 创建一个tomcat.xml放于knox/conf/topologies目录下,并具有以下内容(这样一来tomcat将被视作一个集群的名字,同理如果在knox/conf/topologies目录下放置一个mycluster.xml,那么mycluster也被看做是一个集群的名字,会在knox/data/deployment生成其最新的war包)
|
创建一个tomcat/9.0目录层级放于knox/data/services目录下.
再创建一个service.xml具有以下内容,放于knox/data/services/tomcat/9.0目录下.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> |
再创建一个rewrite.xml具有以下内容,放于knox/data/services/tomcat/9.0目录下
rewrite.xml:
<rules> |
重启knox服务器(先运行knox/bin/gateway stop 再运行knox/bin/gateway start)
若更改service.xml 或rewrite.xml 则执行 ./knoxcli.sh redeploy –cluster tomcat
或删除data/deployments里所有内容,重启knox服务器
访问https://localhost:8443/gateway/tomcat/tomcatui
用浏览器访问时(比如firefox),将网址添加到例外(表示这是个受信任的网站),要求用户名和密码时输入guest和guest-password
可以看到它的内容, 等同于访问http://localhost:8080/.
备注: https://{knox-host}:{knox-port}/gateway/tomcat/tomcatui中tomcat会被看做集群名字,/tomcatui会被看做service.xml里的根路径。rewrite.xml中IN类型的rule中的pattern是针对呈献给用户的最终url比如https://{knox-host}:{knox-port}/gateway/tomcat/tomcatui
也可以利用curl用如下命令访问,看到其结果:
curl -i -k -u guest:guest-password -X GET https://localhost:8443/gateway/tomcat/tomcatui |
至此,Knox代理Tomcat即可成功。
扫码手机观看或分享: