From: Jan B. <ja...@mo...> - 2006-11-22 12:18:29
|
Paul, Virtual hosting uses the host name as reported in the HTTP header for a request. If you are typing a url like http://www.preservingstories.com into the browser, then the host header will be www.preservingstories.com. Your setup has the /stories and /familyhap contexts only responding to the host header www2.preservingstories.com, so the 404 is reporting correctly that there are no contexts matching a host header for www.preservingstories.com. So try changing your virtual hosts lists to match the names you want your users to use in their urls. I don't know why you get the 404 for the url http://www2.preservingstories.com:5000/stories, possibly there's something else going on in your dns. In any case, you can verify what is happening with your host headers by using Mozilla/Firefox and LiveHttpHeaders[1] or a protocol sniffer like wireshark[2]. [1] http://livehttpheaders.mozdev.org/ [2] http://www.wireshark.org/ regards Jan Paul Watkins wrote: > OK, see the responses to your questions, beneath each one below: > > Thanks, > Paul > > On 11/21/06, Jan Bartel <ja...@mo...> wrote: >> Paul, >> >> It's difficult to know what is going on without having the full >> details of your setup - DNS assignments, webapp/ contents, /contexts >> contents, etc/jetty.xml etc etc. > > My DNS is setup to webforward as follows: > http://www.preservingstories.com forwards to > http://ww2.preservingstories.com:5000 > > The webapp/ content is the following war files: > stories.war and familyhap.war and the following directories: > test, ulodging, test-jaas, rei, pswdic, uniting, romance > > The above are verified in the results indicated below. > > The /contexts contents contains: stories.xml, familyhap.xml and test.xml > > The jetty.xml is the standard jetty.xml generated in the latest SVN of > Jetty 6.1 -- with the port modified from 8080 to 5000. >> To clarify for me, can you tell me what happens when you type in >> these 2 urls to a browser: >> >> http://ww2.preservingstories.com:5000/stories >> http://ww2.documentingyourlife.com:5000/stories >> > HTTP ERROR: 404 > > NOT_FOUND > > RequestURI=/stories/ > > Powered by jetty:// >> Typing the following (or the name of the host if you can't run a >> browser on localhost): >> http://localhost:5000 > > Error 404 - Not Found. > No context on this server matched or handled this request. > Contexts known to this server are: > > * /test ---> > org.mortbay.jetty.webapp.WebAppContext@a83b8a{/test,file:/opt/jetty/webapps/test/} > * /stories ---> > org.mortbay.jetty.webapp.WebAppContext@dd20f6{/stories,file:/opt/jetty/webapps/stories.war} > * /javadoc ---> > org.mortbay.jetty.servlet.Context@1a1c887{/javadoc,file:/opt/jetty/javadoc/} > * /familyhap ---> > org.mortbay.jetty.webapp.WebAppContext@fd13b5{/familyhap,file:/opt/jetty/webapps/familyhap.war} > * /ulodging ---> > org.mortbay.jetty.webapp.WebAppContext@136a43c{/ulodging,file:/tmp/Jetty_0_0_0_0_5000__ulodging_/webapp/} > * /test-jaas ---> > org.mortbay.jetty.webapp.WebAppContext@589e56{/test-jaas,file:/opt/jetty/webapps/test-jaas/} > * /rei ---> > org.mortbay.jetty.webapp.WebAppContext@3411a{/rei,file:/tmp/Jetty_0_0_0_0_5000__rei_/webapp/} > * /pswdic ---> > org.mortbay.jetty.webapp.WebAppContext@1a7508a{/pswdic,file:/tmp/Jetty_0_0_0_0_5000__pswdic_/webapp/} > * /uniting ---> > org.mortbay.jetty.webapp.WebAppContext@198cb3d{/uniting,file:/tmp/Jetty_0_0_0_0_5000__uniting_/webapp/} > * /romance ---> > org.mortbay.jetty.webapp.WebAppContext@472d48{/romance,file:/opt/jetty/webapps/romance/} > >> The links above may not work if a virtual host is configured >> should, as you say, show you the list of contexts deployed, but clicking >> on the links for those contexts with virtual hosts won't work. For the >> contexts that don't have virtual hosts, then clicking the links should work. >> >> regards >> Jan >> >> Paul Watkins wrote: >>> Hi Jan, >>> >>> I've checked everything that you suggested below to no avail: >>> >>> 1. I'm using the supplied jetty.xml file with Jetty 6.1 SVN with only >>> one modification: the port is 5000 rather than 8080. >>> >>> 2. Otherwise, my context config file for stories is as supplied below >>> in my original email. >>> >>> If I type http://www.preservingstories.com , I get the Error 404 page >>> in Jetty with all the apps and their contexts. So I know that the URL >>> is working and taking me to the correct port. (This URL worked fine >>> with the old approach where everything was configured in jetty.xml >>> rather than the context directory). >>> >>> 3. I have two apps with contexts set in the context directory: the >>> stories one below and another familyhap. When the error 404 page >>> displays, clicking on either of those context links on the page will >>> not display the web pages (as expected with virtual hosts). The other >>> apps with links on the error 404 page, all from detection in the >>> webapps directory without explicit contexts, will display when the >>> link is clicked, but of course since an explicit context is not set, a >>> URL will not work. >>> >>> 4. So any ideas on why the URL is not resolving to the app? I notice >>> you are using ip addresses whereas I'm using web domains -- should >>> that make a difference? All my domain names for "stories" resolve to >>> the same IP address. It looks like in your examples below you have >>> different IP addresses as virtual host addresses. Am I missing >>> something here? All my virtual hosting previously setup in jetty.xml >>> was multiple web domains all resolving to the same physical ip address >>> with the idea that the context would determine which webapp would >>> display. >>> >>> Thanks, >>> >>> Paul >>> >>> On 11/20/06, Jan Bartel <ja...@mo...> wrote: >>>> Paul, >>>> >>>> it looks fine to me. Do you by chance have the context /stories also >>>> defined in your jetty.xml file, but without a virtual host list? >>>> If so, it will match any incoming request for /stories/whatever >>>> >>>> Just FYI, here's the two $jetty.home/context/ files I am using to test the >>>> virtual hosts: >>>> >>>> $jetty.home/contexts/first.xml: >>>> <?xml version="1.0" encoding="ISO-8859-1"?> >>>> <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> >>>> <Configure class="org.mortbay.jetty.webapp.WebAppContext"> >>>> <!-- Required minimal context configuration --> >>>> <Set name="contextPath">/test</Set> >>>> <Set name="resourceBase"><SystemProperty name="jetty.home" default="."/>/webapps/first</Set> >>>> <Set name="VirtualHosts"> >>>> <Array type="java.lang.String"> >>>> <Item>127.0.0.1</Item> >>>> <Item>127.0.0.2</Item> >>>> <Item>127.0.0.3</Item> >>>> </Array> >>>> </Set> >>>> <!-- Optional context configuration --> >>>> <Get name="securityHandler"> >>>> <Set name="userRealm"> >>>> <New class="org.mortbay.jetty.security.HashUserRealm"> >>>> <Set name="name">Test Realm</Set> >>>> <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set> >>>> </New> >>>> </Set> >>>> </Get> >>>> </Configure> >>>> >>>> $jetty.home/contexts/other.xml: >>>> <?xml version="1.0" encoding="ISO-8859-1"?> >>>> <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> >>>> <Configure class="org.mortbay.jetty.webapp.WebAppContext"> >>>> <Set name="contextPath">/test</Set> >>>> <Set name="resourceBase"><SystemProperty name="jetty.home" default="."/>/webapps/other</Set> >>>> <Set name="VirtualHosts"> >>>> <Array type="java.lang.String"> >>>> <Item>127.0.0.4</Item> >>>> <Item>127.0.0.5</Item> >>>> <Item>127.0.0.6</Item> >>>> </Array> >>>> </Set> >>>> <!-- Optional context configuration --> >>>> <Get name="securityHandler"> >>>> <Set name="userRealm"> >>>> <New class="org.mortbay.jetty.security.HashUserRealm"> >>>> <Set name="name">Test Realm</Set> >>>> <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set> >>>> </New> >>>> </Set> >>>> </Get> >>>> </Configure> >>>> >>>> I've just copied $jetty.home/webapps/test to $jetty.home/webapps/first and $jetty.home/webapps/other. >>>> I modified $jetty.home/webapps/other/index.html to say "Welcome to THE OTHER Jetty 6" so I could >>>> tell the difference. >>>> >>>> Importantly, I changed $jetty.home/contexts/test.xml to also have a disjoint list of >>>> virtual host addresses. If I hadn't done that, then all requests for /test would be >>>> routed to that webapp because without a virtual host list it would match any incoming >>>> request for /test. >>>> >>>> cheers >>>> Jan >>>> >>>> Paul Watkins wrote: >>>>> Jan, >>>>> >>>>> I'm confused with the instructions below and Jetty 6.1 Snapshot or prerelease. >>>>> >>>>> In that version, I'm attempting to use specific contexts in the >>>>> jetty/contexts directory but am not able to use a URL to access the >>>>> web pages. The context deploys and the hot deployer works. Here is >>>>> an example of my code based on the test.xml file in the contexts >>>>> directory. I'm using the virtual hosts approach but can't access with >>>>> a URL. The "old" way of deploying the webapps works where the contexts >>>>> are set in the jetty.xml or similar config files using the approach >>>>> you described in the original response to this email stream. What am >>>>> I missing here? : >>>>> >>>>> <?xml version="1.0" encoding="ISO-8859-1"?> >>>>> <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" >>>>> "http://jetty.mortbay.org/configure.dtd"> >>>>> >>>>> <!-- ================================================================== >>>>> 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 --> >>>>> >>>>> <Set name="contextPath">/stories</Set> >>>>> <Set name="resourceBase"><SystemProperty name="jetty.home" >>>>> default="."/>/webapps/stories.war</Set> >>>>> <!-- <Set name="overrideDescriptor"><SystemProperty name="jetty.home" >>>>> default="."/>/contexts/test.d/override-web.xml</Set> --> >>>>> <Set name="virtualHosts"> >>>>> <Array type="java.lang.String"> >>>>> <Item>ww2.preservingstories.com</Item> >>>>> <Item>ww2.documentingyourlife.com</Item> >>>>> </Array> >>>>> </Set> >>>>> <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" >>>>> default="."/>/etc/webdefault.xml</Set> >>>>> >>>>> <!-- Optional context configuration --> >>>>> >>>>> <Get name="securityHandler"> >>>>> <Set name="userRealm"> >>>>> <New class="org.mortbay.jetty.security.HashUserRealm"> >>>>> <Set name="name">Test Realm</Set> >>>>> <Set name="config"><SystemProperty name="jetty.home" >>>>> default="."/>/etc/realm.properties</Set> >>>>> </New> >>>>> </Set> >>>>> </Get> >>>>> >>>>> </Configure> >>>>> >>>>> --------------------------------------------------------------- >>>>> >>>>> Thanks, >>>>> >>>>> Paul >>>>> >>>>> On 11/17/06, Jan Bartel <ja...@mo...> wrote: >>>>>> Jeff, >>>>>> >>>>>> cc'ing this to the jetty-support list, as others may be interested too. >>>>>> >>>>>> Adding virtual hosts is a matter of listing them as an array >>>>>> on the WebAppContext for the webapp (see below). >>>>>> >>>>>> If you want to serve 2 different webapps from different virtual >>>>>> hosts, but both at the same context path, then you define >>>>>> 2 WebAppContexts, one for each webapp, put them both at the >>>>>> same context path, but define different virtual host lists for >>>>>> them. >>>>>> >>>>>> Assuming we'd defined a connector listening on port 8080, this >>>>>> example would serve webapp xxx.war at: >>>>>> 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/ >>>>>> >>>>>> and webapp zzz.war at: >>>>>> http://777.888.888.111:8080/ >>>>>> http://127.0.0.2:8080/ >>>>>> http://www.other.com:8080/ >>>>>> http://www.other.net:8080/ >>>>>> http://www.other.org:8080/ >>>>>> >>>>>> <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>127.0.0.2</Item> >>>>>> <Item>www.other.com</Item> >>>>>> <Item>www.other.net</Item> >>>>>> <Item>www.other.org</Item> >>>>>> </Array> >>>>>> </Set> >>>>>> </New> >>>>>> >>>>>> I'll write this up as a wiki entry. >>>>>> >>>>>> regards >>>>>> Jan >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> Jeff Shoemaker wrote: >>>>>>> I'm sorry to bug you, but I've been googling how to get this working >>>>>>> forever. I need Jetty 6 to support multiple virtual host entries, >>>>>>> both with a context path of /. This Jetty5 xml does not work in >>>>>>> Jetty6 >>>>>>> >>>>>>> <Call name="addWebApplication"> >>>>>>> <Arg>/context</Arg> >>>>>>> <Arg>./webapps/myapp</Arg> >>>>>>> >>>>>>> <Set name="virtualHosts"> >>>>>>> <Array type="java.lang.String"> >>>>>>> <Item>www.acme.com</Item> >>>>>>> <Item>acme.com</Item> >>>>>>> <Item>www.wileyc.com</Item> >>>>>>> <Item>184.34.51.125</Item> >>>>>>> </Array> >>>>>>> </Set> >>>>>>> </Call> >>>>>>> >>>>>>> >>>>>>> Below is an example of what I currently have, but the second domain >>>>>>> only works if I give it another contextPath besides /. I think I'm >>>>>>> close, just missing a little something. Thank you. >>>>>>> >>>>>>> >>>>>>> <Item> >>>>>>> <New id="websiteOneWebAppContext" >>>>>>> class="org.mortbay.jetty.webapp.WebAppContext"> >>>>>>> <Set name="contextPath">/</Set> >>>>>>> <Set name="war">./webapps/root.war</Set> >>>>>>> <Set name="extractWAR">true</Set> >>>>>>> <Set name="VirtualHosts"> >>>>>>> <Array type="java.lang.String"> >>>>>>> <Item>www.websiteone.com</Item> >>>>>>> </Array> >>>>>>> </Set> >>>>>>> <Get name="SessionHandler"> >>>>>>> <Set name="SessionManager"><New >>>>>>> class="org.mortbay.jetty.servlet.HashSessionManager"/></Set> >>>>>>> </Get> >>>>>>> </New> >>>>>>> </Item> >>>>>>> >>>>>>> <Item> >>>>>>> <New id="websiteTwoWebAppContext" >>>>>>> class="org.mortbay.jetty.webapp.WebAppContext"> >>>>>>> <Set name="contextPath">/</Set> >>>>>>> <Set name="war">./webapps/websitetwo.war</Set> >>>>>>> <Set name="extractWAR">true</Set> >>>>>>> <Set name="VirtualHosts"> >>>>>>> <Array type="java.lang.String"> >>>>>>> <Item>www.websitetwo.com</Item> >>>>>>> </Array> >>>>>>> </Set> >>>>>>> <Get name="SessionHandler"> >>>>>>> <Set name="SessionManager"><New >>>>>>> class="org.mortbay.jetty.servlet.HashSessionManager"/></Set> >>>>>>> </Get> >>>>>>> </New> >>>>>>> </Item> >>>>>> ------------------------------------------------------------------------- >>>>>> Take Surveys. Earn Cash. Influence the Future of IT >>>>>> Join SourceForge.net's Techsay panel and you'll get the chance to share your >>>>>> opinions on IT & business topics through brief surveys - and earn cash >>>>>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >>>>>> _______________________________________________ >>>>>> Jetty-support mailing list >>>>>> Jet...@li... >>>>>> https://lists.sourceforge.net/lists/listinfo/jetty-support >>>>>> >>>>> ------------------------------------------------------------------------- >>>>> Take Surveys. Earn Cash. Influence the Future of IT >>>>> Join SourceForge.net's Techsay panel and you'll get the chance to share your >>>>> opinions on IT & business topics through brief surveys - and earn cash >>>>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >>>>> _______________________________________________ >>>>> Jetty-support mailing list >>>>> Jet...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/jetty-support >>>>> >>>> ------------------------------------------------------------------------- >>>> Take Surveys. Earn Cash. Influence the Future of IT >>>> Join SourceForge.net's Techsay panel and you'll get the chance to share your >>>> opinions on IT & business topics through brief surveys - and earn cash >>>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >>>> _______________________________________________ >>>> Jetty-support mailing list >>>> Jet...@li... >>>> https://lists.sourceforge.net/lists/listinfo/jetty-support >>>> >>> ------------------------------------------------------------------------- >>> Take Surveys. Earn Cash. Influence the Future of IT >>> Join SourceForge.net's Techsay panel and you'll get the chance to share your >>> opinions on IT & business topics through brief surveys - and earn cash >>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >>> _______________________________________________ >>> Jetty-support mailing list >>> Jet...@li... >>> https://lists.sourceforge.net/lists/listinfo/jetty-support >>> >> >> ------------------------------------------------------------------------- >> Take Surveys. Earn Cash. Influence the Future of IT >> Join SourceForge.net's Techsay panel and you'll get the chance to share your >> opinions on IT & business topics through brief surveys - and earn cash >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >> _______________________________________________ >> Jetty-support mailing list >> Jet...@li... >> https://lists.sourceforge.net/lists/listinfo/jetty-support >> > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Jetty-support mailing list > Jet...@li... > https://lists.sourceforge.net/lists/listinfo/jetty-support > |