From: Loren C. <lor...@gm...> - 2010-02-09 19:57:00
|
There is an option (off of trunk version 11177) now to send web queries to different collections within eXist based on the server name in the URL: i.e. With the following configuration changes in controller-config.xml from: <root pattern=".*" path="/"/> to: <root server-name="site1.example.com" pattern="/*" path="xmldb:exist:///db/org/site1/"/> <root server-name="site2.example.com" pattern="/*" path="xmldb:exist:///db/org/site2/"/> <root server-name="site3.example.com" pattern="/*" path="xmldb:exist:///db/org/site3/"/> <root server-name="localhost" pattern=".*" path="/"/> <root server-name="site4.example.com" pattern=".*" path="/"/> http://site1.example.com/ would be redirected to /db/org/site1 http://site2.example.com/ would be redirected to /db/org/site2 http://site3.example.com/ would be redirected to /db/org/site3 http://localhost/ would be directed to index.xml in the webapp directory as it is normally done. http://site4.example.com/ would be directed to index.xml NOTE: The server-name attribute is optional. If it is omitted, then the behavior operates as normal. This will allow for the hosting of multiple websites in one eXist instance. I still need to work on the jetty configuration, so that the logs for each individual website can be separated out from the other websites. |
From: Evgeny G. <gaz...@gm...> - 2010-02-09 20:12:19
|
Agree! what about adding hosts/sites dynamically without restarting exist? I'm plain handle that in controller.xql and some xml metafile for site description. Think it can be more flex in this case. 2010/2/9 Loren Cahlander <lor...@gm...> > There is an option (off of trunk version 11177) now to send web queries to > different collections within eXist based on the server name in the URL: > > i.e. > With the following configuration changes in controller-config.xml > > from: > <root pattern=".*" path="/"/> > > to: > <root server-name="site1.example.com" pattern="/*" > path="xmldb:exist:///db/org/site1/"/> > <root server-name="site2.example.com" pattern="/*" > path="xmldb:exist:///db/org/site2/"/> > <root server-name="site3.example.com" pattern="/*" > path="xmldb:exist:///db/org/site3/"/> > <root server-name="localhost" pattern=".*" path="/"/> > <root server-name="site4.example.com" pattern=".*" path="/"/> > > http://site1.example.com/ would be redirected to /db/org/site1 > http://site2.example.com/ would be redirected to /db/org/site2 > http://site3.example.com/ would be redirected to /db/org/site3 > http://localhost/ would be directed to index.xml in the webapp directory > as it is normally done. > http://site4.example.com/ would be directed to index.xml > > NOTE: The server-name attribute is optional. If it is omitted, then the > behavior operates as normal. > > This will allow for the hosting of multiple websites in one eXist instance. > > > I still need to work on the jetty configuration, so that the logs for each > individual website can be separated out from the other websites. > > > ------------------------------------------------------------------------------ > SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, > Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW > http://p.sf.net/sfu/solaris-dev2dev > _______________________________________________ > Exist-development mailing list > Exi...@li... > https://lists.sourceforge.net/lists/listinfo/exist-development > > |
From: Joe W. <jo...@gm...> - 2010-02-09 20:12:47
|
Loren, Very neat. One observation: In a couple of cases your @pattern was ".*". I believe these should all be "/*", not ".*". Joe On Tue, Feb 9, 2010 at 2:56 PM, Loren Cahlander <lor...@gm...> wrote: > There is an option (off of trunk version 11177) now to send web queries to > different collections within eXist based on the server name in the URL: > i.e. > With the following configuration changes in controller-config.xml > from: > <root pattern=".*" path="/"/> > to: > <root server-name="site1.example.com" pattern="/*" > path="xmldb:exist:///db/org/site1/"/> > <root server-name="site2.example.com" pattern="/*" > path="xmldb:exist:///db/org/site2/"/> > <root server-name="site3.example.com" pattern="/*" > path="xmldb:exist:///db/org/site3/"/> > <root server-name="localhost" pattern=".*" path="/"/> > <root server-name="site4.example.com" pattern=".*" path="/"/> > http://site1.example.com/ would be redirected to /db/org/site1 > http://site2.example.com/ would be redirected to /db/org/site2 > http://site3.example.com/ would be redirected to /db/org/site3 > http://localhost/ would be directed to index.xml in the webapp directory as > it is normally done. > http://site4.example.com/ would be directed to index.xml > NOTE: The server-name attribute is optional. If it is omitted, then the > behavior operates as normal. > This will allow for the hosting of multiple websites in one eXist instance. > > I still need to work on the jetty configuration, so that the logs for each > individual website can be separated out from the other websites. |
From: Loren C. <lor...@gm...> - 2010-02-09 20:34:32
|
The .* is the default for root: <root pattern=".*" path="/"/> I just added localhost in the server-name attribute <root server-name="localhost" pattern=".*" path="/"/> Loren On Feb 9, 2010, at 02:12 PM, Joe Wicentowski wrote: > Loren, > > Very neat. One observation: In a couple of cases your @pattern was > ".*". I believe these should all be "/*", not ".*". > > Joe > > > On Tue, Feb 9, 2010 at 2:56 PM, Loren Cahlander > <lor...@gm...> wrote: >> There is an option (off of trunk version 11177) now to send web queries to >> different collections within eXist based on the server name in the URL: >> i.e. >> With the following configuration changes in controller-config.xml >> from: >> <root pattern=".*" path="/"/> >> to: >> <root server-name="site1.example.com" pattern="/*" >> path="xmldb:exist:///db/org/site1/"/> >> <root server-name="site2.example.com" pattern="/*" >> path="xmldb:exist:///db/org/site2/"/> >> <root server-name="site3.example.com" pattern="/*" >> path="xmldb:exist:///db/org/site3/"/> >> <root server-name="localhost" pattern=".*" path="/"/> >> <root server-name="site4.example.com" pattern=".*" path="/"/> >> http://site1.example.com/ would be redirected to /db/org/site1 >> http://site2.example.com/ would be redirected to /db/org/site2 >> http://site3.example.com/ would be redirected to /db/org/site3 >> http://localhost/ would be directed to index.xml in the webapp directory as >> it is normally done. >> http://site4.example.com/ would be directed to index.xml >> NOTE: The server-name attribute is optional. If it is omitted, then the >> behavior operates as normal. >> This will allow for the hosting of multiple websites in one eXist instance. >> >> I still need to work on the jetty configuration, so that the logs for each >> individual website can be separated out from the other websites. |
From: Joe W. <jo...@gm...> - 2010-02-09 21:17:13
|
Sorry, my bad! You have it right. - Joe On Tuesday, February 9, 2010, Loren Cahlander <lor...@gm...> wrote: > The .* is the default for root: > > <root pattern=".*" path="/"/> > > I just added localhost in the server-name attribute > > <root server-name="localhost" pattern=".*" path="/"/> > > > Loren > > On Feb 9, 2010, at 02:12 PM, Joe Wicentowski wrote: > >> Loren, >> >> Very neat. One observation: In a couple of cases your @pattern was >> ".*". I believe these should all be "/*", not ".*". >> >> Joe |
From: Loren C. <lor...@gm...> - 2010-02-09 20:35:43
|
I am open to suggestions. On Feb 9, 2010, at 02:12 PM, Evgeny Gazdovsky wrote: > Agree! what about adding hosts/sites dynamically without restarting exist? > I'm plain handle that in controller.xql and some xml metafile for site description. > Think it can be more flex in this case. > > > 2010/2/9 Loren Cahlander <lor...@gm...> > There is an option (off of trunk version 11177) now to send web queries to different collections within eXist based on the server name in the URL: > > i.e. > With the following configuration changes in controller-config.xml > > from: > <root pattern=".*" path="/"/> > > to: > <root server-name="site1.example.com" pattern="/*" path="xmldb:exist:///db/org/site1/"/> > <root server-name="site2.example.com" pattern="/*" path="xmldb:exist:///db/org/site2/"/> > <root server-name="site3.example.com" pattern="/*" path="xmldb:exist:///db/org/site3/"/> > <root server-name="localhost" pattern=".*" path="/"/> > <root server-name="site4.example.com" pattern=".*" path="/"/> > > http://site1.example.com/ would be redirected to /db/org/site1 > http://site2.example.com/ would be redirected to /db/org/site2 > http://site3.example.com/ would be redirected to /db/org/site3 > http://localhost/ would be directed to index.xml in the webapp directory as it is normally done. > http://site4.example.com/ would be directed to index.xml > > NOTE: The server-name attribute is optional. If it is omitted, then the behavior operates as normal. > > This will allow for the hosting of multiple websites in one eXist instance. > > I still need to work on the jetty configuration, so that the logs for each individual website can be separated out from the other websites. > > ------------------------------------------------------------------------------ > SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, > Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW > http://p.sf.net/sfu/solaris-dev2dev > _______________________________________________ > Exist-development mailing list > Exi...@li... > https://lists.sourceforge.net/lists/listinfo/exist-development > > |
From: Loren C. <lor...@gm...> - 2010-02-09 20:56:54
|
To add the server name to the jetty request logs (tools/jetty/logs/*), you need to add a parameter to the jetty.xml in the trunk branch only: <Ref id="RequestLog"> <Set name="requestLog"> <New id="RequestLogImpl" class="org.eclipse.jetty.server.NCSARequestLog"> <Set name="filename"><SystemProperty name="jetty.home" default="."/>/logs/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">true</Set> <Set name="logCookies">false</Set> <Set name="LogTimeZone">GMT</Set> <Set name="LogServer">true</Set> </New> </Set> </Ref> This will only work on the trunk, because that parameter can only be set under Jetty7. It adds the server name on the request at the beginning of the logfile entry before the ip address of the requesting computer. I also change the extended parameter to true, because that gives the referring URL and the browser agent information in the log file. This supplies a great deal of information for web statistics such as awstats. On Feb 9, 2010, at 01:56 PM, Loren Cahlander wrote: > There is an option (off of trunk version 11177) now to send web queries to different collections within eXist based on the server name in the URL: > > i.e. > With the following configuration changes in controller-config.xml > > from: > <root pattern=".*" path="/"/> > > to: > <root server-name="site1.example.com" pattern="/*" path="xmldb:exist:///db/org/site1/"/> > <root server-name="site2.example.com" pattern="/*" path="xmldb:exist:///db/org/site2/"/> > <root server-name="site3.example.com" pattern="/*" path="xmldb:exist:///db/org/site3/"/> > <root server-name="localhost" pattern=".*" path="/"/> > <root server-name="site4.example.com" pattern=".*" path="/"/> > > http://site1.example.com/ would be redirected to /db/org/site1 > http://site2.example.com/ would be redirected to /db/org/site2 > http://site3.example.com/ would be redirected to /db/org/site3 > http://localhost/ would be directed to index.xml in the webapp directory as it is normally done. > http://site4.example.com/ would be directed to index.xml > > NOTE: The server-name attribute is optional. If it is omitted, then the behavior operates as normal. > > This will allow for the hosting of multiple websites in one eXist instance. > > I still need to work on the jetty configuration, so that the logs for each individual website can be separated out from the other websites. |
From: Thomas W. <tho...@gm...> - 2010-02-10 08:24:22
|
Loren, This is a very useful extension. I like it very much. I would like to suggest two additional features: 1. specify the name of the log file explicitly. 2. to allow wildcat symbols in the server name: <root server-name="images*,.example.com <http://site1.example.com/>" pattern="/*" path="xmldb:exist:///db/images/" log-name="images-xxx, example.com <http://site1.example.com/>"/> This is particularly useful when we want images in a web page to load quicker, to bypass the browser limit of downloading only up to 2 files simultaneously from a domain. Thomas ------ Thomas White Mobile:+44 7711 922 966 Skype: thomaswhite gTalk: thomas.0007 Linked-In:http://www.linkedin.com/in/thomaswhite0007 facebook: http://www.facebook.com/thomas.0007 On 9 February 2010 20:35, Loren Cahlander <lor...@gm...> wrote: > I am open to suggestions. > |
From: Loren C. <lor...@gm...> - 2010-02-10 14:45:57
|
Hello Thomas, The matching could be implemented by changing the following code in RewriteConfig.java: /* * If the URLRewrite is a ControllerForward, then test to see if there is a condition * on the server name. If there is a condition on the server name and the names do not * match, then ignore this ControllerForward. */ if (action instanceof ControllerForward) { if (serverName != null) { String controllerServerName = ((ControllerForward)action).getServerName(); if (controllerServerName != null) { if (!serverName.equalsIgnoreCase(controllerServerName)) { continue; } } } } As for the access log file, that is specified in the Jetty config file. <Ref id="RequestLog"> <Set name="requestLog"> <New id="RequestLogImpl" class="org.eclipse.jetty.server.NCSARequestLog"> <Set name="filename"><SystemProperty name="jetty.home" default="."/>/logs/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">true</Set> <Set name="logCookies">false</Set> <Set name="LogTimeZone">GMT</Set> <Set name="LogServer">true</Set> </New> </Set> </Ref> The format of the logfile entries are as follows based on the parameters: Extended LogServer Format False False "%host %other %logname %time1 %methodurl %code %bytesd" False True "%virtualname %host %other %logname %time1 %methodurl %code %bytesd" True False "%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot" True True "%virtualname %host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot" With the following being the legend: # %virtualname Web sever virtual hostname. Use this tag when same log # contains data of several virtual web servers. AWStats # will discard records not in SiteDomain nor HostAliases # %host Client hostname or IP address (or Sender host for mail log) # %other Means another not used field # %logname Authenticated login/user with format: john # %time1 Date and time with format: [dd/mon/yyyy:hh:mm:ss +0000] or [dd/mon/yyyy:hh:mm:ss] # %methodurl Method and URL with format: "GET /index.html HTTP/x.x" # %code Return code status (with format for web log: 999) # %bytesd Size of document in bytes # %refererquot Referer page with format: "http://from.com/from.htm" # %uaquot User agent with format: "Mozilla/4.0 (compatible, ...)" You could write your own RequestLogger and have the server name mapped into the log file name. I am planning on adding the JavaDoc to the NCSARequestLogger (https://bugs.eclipse.org/bugs/show_bug.cgi?id=302350) so that the impact of changing the parameter values is clear. Loren On Feb 10, 2010, at 02:23 AM, Thomas White wrote: > > Loren, > > This is a very useful extension. I like it very much. > I would like to suggest two additional features: > specify the name of the log file explicitly. > to allow wildcat symbols in the server name: > <root server-name="images*,.example.com" pattern="/*" path="xmldb:exist:///db/images/" log-name="images-xxx,example.com"/> > > This is particularly useful when we want images in a web page to load quicker, to bypass the browser limit of downloading only up to 2 files simultaneously from a domain. > > Thomas |