jetty IP主机配置
一个虚拟主机是一个为IP地址在DNS注册的可选择的名字。一个ip地址可以很多这样选择的名字。多址主机,是一个机器有多个网络接口,每个ip地址有一个不同的名字。这也叫做“虚拟主机“。本质上,“虚拟主机“涉及到DNS注册名字到IP地址的解析 - 多个IP地址可以解析到同一个IP地址,一个或多个IP地址可能在同一个物理机器上。Jetty用户经常想配置他们的应用程序而考虑这些不同的虚拟主机。通常是一个IP地址,有很多DNS解析的名字指向它,一个布置在上面的程序所有的名字都可以访问到它。另一种可能性就是不同的虚拟主机服务于不同的应用程序。让我们检查这种可能性。配置虚拟主机
当我们配置一个应用程序的时候,我们可以提供一个可以访问的IP地址和名字的列表,假设我们有一个机器有如下的IP地址和DNS解析的名字:
333.444.555.666
127.0.0.1
www.blah.com
www.blah.net
www.blah.org
假设我们有一个web程序,xxx.war我们想让这个程序服务所有上面的名字和IP地址,那我们将会这样配置web应用程序:
view plaincopy to clipboardprint?
[*]<New class="org.mortbay.jetty.webapp.WebAppContext">
[*] <Arg><Ref id="contexts"/></Arg>
[*] <Arg><SystemProperty name="jetty.home">/webapps/xxx.war</Arg>
[*] <Arg>/xxx</Arg>
[*] <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
[*] <Set name="VirtualHosts">
[*] <Array type="java.lang.String">
[*] <Item>333.444.555.666</Item>
[*] <Item>127.0.0.1</Item>
[*] <Item>www.blah.com</Item>
[*] <Item>www.blah.net</Item>
[*] <Item>www.blah.org</Item>
[*] </Array>
[*] </Set>
[*]</New>
<New class="org.mortbay.jetty.webapp.WebAppContext"><Arg><Ref id="contexts"/></Arg><Arg><SystemProperty name="jetty.home">/webapps/xxx.war</Arg><Arg>/xxx</Arg><Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set><Set name="VirtualHosts"><Array type="java.lang.String"><Item>333.444.555.666</Item><Item>127.0.0.1</Item><Item>www.blah.com</Item><Item>www.blah.net</Item><Item>www.blah.org</Item></Array></Set></New>
假设我们已经配置了一监听8080端口的连接器,下面的所有地址都可以访问这个应用程序:
http://333.444.555.666:8080/xxx
http://127.0.0.1:8080/xxx
http://www.blah.com:8080/xxx
http://www.blah.net:8080/xxx
http://www.blah.org:8080/xxx
为不同的虚拟主机配置不同的程序
这个通过为每个web程序提供不同的虚拟主机列表来完成。举个例子,假设我们有个机器有如下的DNS名字和IP地址:
333.444.555.666
127.0.0.1
www.blah.com
www.blah.net
www.blah.org
777.888.888.111
www.other.com
www.other.net
www.other.org
假设我们有另一个web程序,zzz.war。我们想xxx.war还想上面的配置,但是zzz.war配置成只能从777.888.888.111, www.other.com, www.other.net 和 www.other.org来访问:
view plaincopy to clipboardprint?
[*]<!-- webapp xxx.war -->
[*] <New class="org.mortbay.jetty.webapp.WebAppContext">
[*] <Arg><Ref id="contexts"/></Arg>
[*] <Arg><SystemProperty name="jetty.home">/webapps/xxx.war</Arg>
[*] <Arg>/xxx</Arg>
[*] <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
[*] <Set name="VirtualHosts">
[*] <Array type="java.lang.String">
[*] <Item>333.444.555.666</Item>
[*] <Item>127.0.0.1</Item>
[*] <Item>www.blah.com</Item>
[*] <Item>www.blah.net</Item>
[*] <Item>www.blah.org</Item>
[*] </Array>
[*] </Set>
[*] </New>
[*]
[*] <!-- webapp zzz.war -->
[*] <New class="org.mortbay.jetty.webapp.WebAppContext">
[*] <Arg><Ref id="contexts"/></Arg>
[*] <Arg><SystemProperty name="jetty.home">/webapps/zzz.war</Arg>
[*] <Arg>/zzz</Arg>
[*] <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
[*] <Set name="VirtualHosts">
[*] <Array type="java.lang.String">
[*] <Item>777.888.888.111</Item>
[*] <Item>www.other.com</Item>
[*] <Item>www.other.net</Item>
[*] <Item>www.other.org</Item>
[*] </Array>
[*] </Set>
[*] </New>
<!-- webapp xxx.war --><New class="org.mortbay.jetty.webapp.WebAppContext"><Arg><Ref id="contexts"/></Arg><Arg><SystemProperty name="jetty.home">/webapps/xxx.war</Arg><Arg>/xxx</Arg><Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set><Set name="VirtualHosts"><Array type="java.lang.String"><Item>333.444.555.666</Item><Item>127.0.0.1</Item><Item>www.blah.com</Item><Item>www.blah.net</Item><Item>www.blah.org</Item></Array></Set></New><!-- webapp zzz.war --><New class="org.mortbay.jetty.webapp.WebAppContext"><Arg><Ref id="contexts"/></Arg><Arg><SystemProperty name="jetty.home">/webapps/zzz.war</Arg><Arg>/zzz</Arg><Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set><Set name="VirtualHosts"><Array type="java.lang.String"><Item>777.888.888.111</Item><Item>www.other.com</Item><Item>www.other.net</Item><Item>www.other.org</Item></Array></Set></New>
程序仍然在下列地址可用:
http://333.444.555.666:8080/xxx
http://127.0.0.1:8080/xxx
http://www.blah.com:8080/xxx
http://www.blah.net:8080/xxx
http://www.blah.org:8080/xxx
但是现在程序zzz.war在下列地址可用:
http://777.888.888.111:8080/zzz
http://www.other.com:8080/zzz
http://www.other.net:8080/zzz
http://www.other.org:8080/zzz
为不同的虚拟主机配置不同的程序,但是有相同的上下文路径
在上面的例子中,我们不只让程序zzz.war在这些虚拟主机上可用,也同时确定了上下文路径zzz,同时我们其它的程序也是在不同的虚拟主机和不同的上下文上可用。如果我们想让这些虚拟主机使用相同的上下文改怎么办呢?非常简单, 我们仅仅需要为每个程序提供相同的上下文路径,保留以上其它定义就可以了:
view plaincopy to clipboardprint?
[*]<New class="org.mortbay.jetty.webapp.WebAppContext">
[*] <Arg><Ref id="contexts"/></Arg>
[*] <Arg><SystemProperty name="jetty.home">/webapps/xxx.war</Arg>
[*] *<Arg>/</Arg>*
[*] <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
[*] <Set name="VirtualHosts">
[*] <Array type="java.lang.String">
[*] <Item>333.444.555.666</Item>
[*] <Item>127.0.0.1</Item>
[*] <Item>www.blah.com</Item>
[*] <Item>www.blah.net</Item>
[*] <Item>www.blah.org</Item>
[*] </Array>
[*] </Set>
[*] </New>
[*]
[*] <New class="org.mortbay.jetty.webapp.WebAppContext">
[*] <Arg><Ref id="contexts"/></Arg>
[*] <Arg><SystemProperty name="jetty.home">/webapps/zzz.war</Arg>
[*] *<Arg>/</Arg>*
[*] <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
[*] <Set name="VirtualHosts">
[*] <Array type="java.lang.String">
[*] <Item>777.888.888.111</Item>
[*] <Item>www.other.com</Item>
[*] <Item>www.other.net</Item>
[*] <Item>www.other.org</Item>
[*] </Array>
[*] </Set>
[*] </New>
<New class="org.mortbay.jetty.webapp.WebAppContext"><Arg><Ref id="contexts"/></Arg><Arg><SystemProperty name="jetty.home">/webapps/xxx.war</Arg>*<Arg>/</Arg>*<Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set><Set name="VirtualHosts"><Array type="java.lang.String"><Item>333.444.555.666</Item><Item>127.0.0.1</Item><Item>www.blah.com</Item><Item>www.blah.net</Item><Item>www.blah.org</Item></Array></Set></New><New class="org.mortbay.jetty.webapp.WebAppContext"><Arg><Ref id="contexts"/></Arg><Arg><SystemProperty name="jetty.home">/webapps/zzz.war</Arg>*<Arg>/</Arg>*<Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set><Set name="VirtualHosts"><Array type="java.lang.String"><Item>777.888.888.111</Item><Item>www.other.com</Item><Item>www.other.net</Item><Item>www.other.org</Item></Array></Set></New>
现在, xxx.war程序可在如下地址访问:
http://333.444.555.666:8080/
http://127.0.0.1:8080/
http://www.blah.com:8080/
http://www.blah.net:8080/
http://www.blah.org:8080/
而zzz.war程序可在如下地址访问:
http://777.888.888.111:8080/
http://www.other.com:8080/
http://www.other.net:8080/
http://www.other.org:8080/
<!-- Attachments -->
页:
[1]