docker虚拟主机

我试图configuration多个的Jetty,我面临的问题是Jetty运行与另一个名为SmartfoxServer的服务器产品,所以我不知道如果我可以实际configuration它,我喜欢的方式。

这是我的jetty.xml:

<Configure id="Server" class="org.mortbay.jetty.Server"> <!-- =========================================================== --> <!-- Server Thread Pool --> <!-- =========================================================== --> <Set name="ThreadPool"> <New class="org.mortbay.thread.QueuedThreadPool"> <Set name="minThreads">10</Set> <Set name="maxThreads">200</Set> <Set name="lowThreads">20</Set> <Set name="SpawnOrShrinkAt">2</Set> </New> <!-- Optional Java 5 bounded threadpool with job queue <New class="org.mortbay.thread.concurrent.ThreadPool"> <Set name="corePoolSize">50</Set> <Set name="maximumPoolSize">50</Set> </New> --> </Set> <!-- =========================================================== --> <!-- Set connectors --> <!-- =========================================================== --> <!-- One of each type! --> <!-- =========================================================== --> <!-- Use this connector for many frequently idle connections and for threadless continuations. --> <Call name="addConnector"> <Arg> <New class="org.mortbay.jetty.nio.SelectChannelConnector"> <Set name="host"><SystemProperty name="jetty.host" /></Set> <Set name="port"><SystemProperty name="jetty.port" default="8080"/></Set> <Set name="maxIdleTime">30000</Set> <Set name="Acceptors">2</Set> <Set name="statsOn">false</Set> <Set name="confidentialPort">8443</Set> <Set name="lowResourcesConnections">5000</Set> <Set name="lowResourcesMaxIdleTime">5000</Set> </New> </Arg> </Call> <!-- Use this connector if NIO is not available. <Call name="addConnector"> <Arg> <New class="org.mortbay.jetty.bio.SocketConnector"> <Set name="port">8081</Set> <Set name="maxIdleTime">50000</Set> <Set name="lowResourceMaxIdleTime">1500</Set> </New> </Arg> </Call> --> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <!-- To add a HTTPS SSL listener --> <!-- see jetty-ssl.xml to add an ssl connector. use --> <!-- java -jar start.jar etc/jetty.xml etc/jetty-ssl.xml --> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <!-- To allow Jetty to be started from xinetd --> <!-- mixin jetty-xinetd.xml: --> <!-- java -jar start.jar etc/jetty.xml etc/jetty-xinetd.xml --> <!-- --> <!-- See jetty-xinetd.xml for further instructions. --> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <!-- =========================================================== --> <!-- Set up global session ID manager --> <!-- =========================================================== --> <!-- <Set name="sessionIdManager"> <New class="org.mortbay.jetty.servlet.HashSessionIdManager"> <Set name="workerName">node1</Set> </New> </Set> --> <!-- =========================================================== --> <!-- Set handler Collection Structure --> <!-- =========================================================== --> <Set name="handler"> <New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection"> <Set name="handlers"> <Array type="org.mortbay.jetty.Handler"> <Item> <New id="Contexts" class="org.mortbay.jetty.handler.ContextHandlerCollection"/> </Item> <Item> <New id="DefaultHandler" class="org.mortbay.jetty.handler.DefaultHandler"/> </Item> <Item> <New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/> </Item> </Array> </Set> </New> </Set> <!-- =========================================================== --> <!-- Configure the context deployer --> <!-- A context deployer will deploy contexts described in --> <!-- configuration files discovered in a directory. --> <!-- The configuration directory can be scanned for hot --> <!-- deployments at the configured scanInterval. --> <!-- --> <!-- This deployer is configured to deploy contexts configured --> <!-- in the $JETTY_HOME/contexts directory --> <!-- --> <!-- =========================================================== --> <Call name="addLifeCycle"> <Arg> <New class="org.mortbay.jetty.deployer.ContextDeployer"> <Set name="contexts"><Ref id="Contexts"/></Set> <Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts</Set> <Set name="scanInterval">5</Set> </New> </Arg> </Call> <!-- =========================================================== --> <!-- Configure the webapp deployer. --> <!-- A webapp deployer will deploy standard webapps discovered --> <!-- in a directory at startup, without the need for additional --> <!-- configuration files. It does not support hot deploy or --> <!-- non standard contexts (see ContextDeployer above). --> <!-- --> <!-- This deployer is configured to deploy webapps from the --> <!-- $JETTY_HOME/webapps directory --> <!-- --> <!-- Normally only one type of deployer need be used. --> <!-- --> <!-- =========================================================== --> <Call name="addLifeCycle"> <Arg> <New class="org.mortbay.jetty.deployer.WebAppDeployer"> <Set name="contexts"><Ref id="Contexts"/></Set> <Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/www</Set> <Set name="parentLoaderPriority">false</Set> <Set name="extract">true</Set> <Set name="allowDuplicates">false</Set> <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/config/jetty/webdefault.xml</Set> </New> </Arg> </Call> <!-- =========================================================== --> <!-- Configure Authentication Realms --> <!-- Realms may be configured for the entire server here, or --> <!-- they can be configured for a specific web app in a context --> <!-- configuration (see $(jetty.home)/contexts/test.xml for an --> <!-- example). --> <!-- =========================================================== --> <Set name="UserRealms"> <Array type="org.mortbay.jetty.security.UserRealm"> <Item> <New class="org.mortbay.jetty.security.HashUserRealm"> <Set name="name">Test Realm</Set> <Set name="config"><SystemProperty name="jetty.home" default="."/>/config/jetty/realm.properties</Set> <Set name="refreshInterval">0</Set> </New> </Item> </Array> </Set> <!-- =========================================================== --> <!-- Configure Request Log --> <!-- Request logs may be configured for the entire server here, --> <!-- or they can be configured for a specific web app in a --> <!-- contexts configuration (see $(jetty.home)/contexts/test.xml --> <!-- for an example). --> <!-- =========================================================== --> <Ref id="RequestLog"> <Set name="requestLog"> <New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog"> <Set name="filename"><SystemProperty name="jetty.logs" default="./logs/http"/>/yyyy_mm_dd.request.log</Set> <Set name="filenameDateFormat">yyyy_MM_dd</Set> <Set name="retainDays">90</Set> <Set name="append">true</Set> <Set name="extended">false</Set> <Set name="logCookies">false</Set> <Set name="LogTimeZone">GMT</Set> </New> </Set> </Ref> <!-- =========================================================== --> <!-- extra options --> <!-- =========================================================== --> <Set name="stopAtShutdown">true</Set> <Set name="sendServerVersion">true</Set> <Set name="sendDateHeader">true</Set> <Set name="gracefulShutdown">1000</Set> </Configure> 

我有以下文件夹结构:

  • 万维网/
  • WWW /根/
  • WWW /域2 /

localhost:8080加载 root / index.html

localhost:8080 / domain2 / loaded domain2 / index.html

在根和domain2文件夹中,有这个WEB-INF / web.xml文件:

 <web-app> <display-name>default</display-name> <description></description> <welcome-file-list> <welcome-file>index.py</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.html</welcome-file> </welcome-file-list> <error-page> <error-code>404</error-code> <location>/errors/404.htm</location> </error-page> <servlet> <servlet-name>DefaultServlet</servlet-name> <servlet-class>org.python.util.PyServlet</servlet-class> <init-param> <param-name>python.home</param-name> <param-value>./lib/</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DefaultServlet</servlet-name> <url-pattern>*.py</url-pattern> </servlet-mapping> </web-app> 

我试过添加:

 <Configure class="org.mortbay.jetty.webapp.WebAppContext"> <Set name="contextPath">/www/domain2/</Set> <Set name="virtualHosts"> <Array type="java.lang.String"> <Item>domain2</Item> </Array> </Set> </Configure> 

到web.xml文件,然后访问它与http:// domain2:8080 ,但是这是行不通的,我真的不知道这是否是正确的方式来做到这一点。 这里的信息: http : //docs.codehaus.org/display/JETTY/Virtual+hosts是指战争,但我甚至没有战争。 如上所述,我甚至不确定是否有可能,因为我在SmartfoxServer中使用Jetty。 谢谢你的帮助。

好吧,我解决了它:

  1. 创build与www文件夹相同级别的上下文文件夹。
  2. 在上下文文件夹中创build以下domain2.xml文件(不要忘记添加xml头)

'把XML标题放在这里'

 <!-- ================================================================== Configure and deploy the test web application in $(jetty.home)/webapps/test Note. If this file did not exist or used a context path other that /test then the default configuration of jetty.xml would discover the test webapplication with a WebAppDeployer. By specifying a context in this directory, additional configuration may be specified and hot deployments detected. ===================================================================== --> <Configure class="org.mortbay.jetty.webapp.WebAppContext"> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <!-- Required minimal context configuration : --> <!-- + contextPath --> <!-- + war OR resourceBase --> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <Set name="contextPath">/</Set> <!-- <Set name="war"><SystemProperty name="jetty.home" default="."/>/www</Set> --> <Set name="resourceBase"><SystemProperty name="jetty.home" default="."/>/www/domain2/</Set> <!-- <Set name="handler"> <New class="org.mortbay.jetty.handler.ResourceHandler"> <Set name="welcomeFiles"> <Array type="String"> <Item>index.html</Item> </Array> </Set> </New> </Set> --> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <!-- Optional context configuration --> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/config/jetty/webdefault.xml</Set> <Set name="overrideDescriptor"><SystemProperty name="jetty.home" default="."/>/www/domain2/WEB-INF/web.xml</Set> <!-- virtual hosts --> <Set name="virtualHosts"> <Array type="String"> <Item>domain2.com</Item> <Item>www.domain2.com</Item> </Array> </Set> </Configure>