| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <html> |
| <head> |
| <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <meta content="Apache Forrest" name="Generator"> |
| <meta name="Forrest-version" content="0.9-dev"> |
| <meta name="Forrest-skin-name" content="pelt"> |
| <title>Part 6a: mod_proxy and Lenya</title> |
| <link type="text/css" href="../../../skin/basic.css" rel="stylesheet"> |
| <link media="screen" type="text/css" href="../../../skin/screen.css" rel="stylesheet"> |
| <link media="print" type="text/css" href="../../../skin/print.css" rel="stylesheet"> |
| <link type="text/css" href="../../../skin/profile.css" rel="stylesheet"> |
| <script src="../../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../../skin/fontsize.js" language="javascript" type="text/javascript"></script> |
| <link rel="shortcut icon" href="../../../favicon.ico"> |
| </head> |
| <body onload="init()"> |
| <script type="text/javascript">ndeSetTextSize();</script> |
| <div id="top"> |
| <!--+ |
| |breadtrail |
| +--> |
| <div class="breadtrail"> |
| <a href="http://www.apache.org/">apache</a> > <a href="http://lenya.apache.org/">lenya</a><script src="../../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script> |
| </div> |
| <!--+ |
| |header |
| +--> |
| <div class="header"> |
| <!--+ |
| |start group logo |
| +--> |
| <div class="grouplogo"> |
| <a href=""><img class="logoImage" alt="Lenya" src="../../../images/apache-lenya-light.png" title=""></a> |
| </div> |
| <!--+ |
| |end group logo |
| +--> |
| <!--+ |
| |start Project Logo |
| +--> |
| <div class="projectlogo"> |
| <a href=""></a> |
| </div> |
| <!--+ |
| |end Project Logo |
| +--> |
| <!--+ |
| |start Search |
| +--> |
| <div class="searchbox"> |
| <form action="http://www.google.com/search" method="get" class="roundtopsmall"> |
| <input value="lenya.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with ');" size="25" name="q" id="query" type="text" value="Search the site with "> |
| <input name="Search" value="Search" type="submit"> |
| </form> |
| </div> |
| <!--+ |
| |end search |
| +--> |
| <!--+ |
| |start Tabs |
| +--> |
| <ul id="tabs"> |
| <li> |
| <a class="unselected" href="../../../index.html">Project</a> |
| </li> |
| <li> |
| <a class="unselected" href="../../../docs/index.html">Developer</a> |
| </li> |
| <li> |
| <a class="unselected" href="../../../community/index.html">Community</a> |
| </li> |
| <li> |
| <a class="unselected" href="../../../docs/2_0_x/index.html">Version 2.0</a> |
| </li> |
| <li class="current"> |
| <a class="selected" href="../../../docs/1_2_x/index.html">Version 1.2</a> |
| </li> |
| </ul> |
| <!--+ |
| |end Tabs |
| +--> |
| </div> |
| </div> |
| <div id="main"> |
| <div id="publishedStrip"> |
| <!--+ |
| |start Subtabs |
| +--> |
| <div id="level2tabs"></div> |
| <!--+ |
| |end Endtabs |
| +--> |
| <script type="text/javascript"><!-- |
| document.write("Last Published: " + document.lastModified); |
| // --></script> |
| </div> |
| <!--+ |
| |breadtrail |
| +--> |
| <div class="breadtrail"> |
| |
| |
| </div> |
| <!--+ |
| |start Menu, mainarea |
| +--> |
| <!--+ |
| |start Menu |
| +--> |
| <div id="menu"> |
| <div onclick="SwitchMenu('menu_selected_1.1', '../../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">Version 1.2</div> |
| <div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/index.html">Index</a> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.2', '../../../skin/')" id="menu_1.1.2Title" class="menutitle">Installation</div> |
| <div id="menu_1.1.2" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/installation/index.html">Download</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/installation/subversion.html">Subversion Access</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/installation/source_version.html">Install Instructions</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_selected_1.1.3', '../../../skin/')" id="menu_selected_1.1.3Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">Tutorial</div> |
| <div id="menu_selected_1.1.3" class="selectedmenuitemgroup" style="display: block;"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/tutorial/index.html">Introduction</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/tutorial/understanding_lenya.html">1. Understanding Lenya</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/tutorial/installing_lenya.html">2. Installing Lenya</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/tutorial/anatomy_of_the_pipeline.html">3. Anatomy of the Pipeline</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/tutorial/editing_in_lenya.html">4. Editing in Lenya</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/tutorial/custom_navigation.html">5. Custom Navigation in Lenya</a> |
| </div> |
| <div class="menupage"> |
| <div class="menupagetitle">6a. Mod Proxy and Lenya</div> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/tutorial/mod_proxy_and_lenya_continued.html">6b. Mod Proxy and Lenya</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.4', '../../../skin/')" id="menu_1.1.4Title" class="menutitle">How-To</div> |
| <div id="menu_1.1.4" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/how-to/faq.html">FAQ</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/how-to/new_publication.html">New Publication</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/how-to/deploy_publication.html">Deploy Publication</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/how-to/look_and_feel.html">Look and Feel</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/how-to/custom_resourcetype.html">Custom Resource Type</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/how-to/new_mime_type.html">Adding Mime Types</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/how-to/site_navigation.html">Site Navigation</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/how-to/ldap_authentication.html">LDAP Authentication</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/how-to/cms_menus.html">CMS Menus</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/how-to/cms_screens.html">CMS Screens</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/how-to/search.html">Search Publications</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/how-to/external_data.html">External Data</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/how-to/unittests.html">Unit Tests</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5', '../../../skin/')" id="menu_1.1.5Title" class="menutitle">Components</div> |
| <div id="menu_1.1.5" class="menuitemgroup"> |
| <div onclick="SwitchMenu('menu_1.1.5.1', '../../../skin/')" id="menu_1.1.5.1Title" class="menutitle">Access Control</div> |
| <div id="menu_1.1.5.1" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/accesscontrol/terms.html">Basic Terms</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/accesscontrol/accesscontrollers.html">Access Controllers</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/accesscontrol/accesscontrollerresolvers.html">Access Controller Resolvers</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/accesscontrol/authenticators.html">Authenticators</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/accesscontrol/authorizers.html">Authorizers</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/accesscontrol/policymanagers.html">Policies and Policy Managers</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/accesscontrol/accreditablemanagers.html">Accreditable Managers</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/accesscontrol/ssl.html">SSL Encryption</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.2', '../../../skin/')" id="menu_1.1.5.2Title" class="menutitle">Authoring</div> |
| <div id="menu_1.1.5.2" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/authoring/adding-document-creator.html">Adding a new document creator</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/authoring/image-upload.html">Image Upload</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/authoring/openoffice.html">OpenOffice</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.3', '../../../skin/')" id="menu_1.1.5.3Title" class="menutitle">Deployment</div> |
| <div id="menu_1.1.5.3" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/deployment/proxying.html">Proxying</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.4', '../../../skin/')" id="menu_1.1.5.4Title" class="menutitle">Editors</div> |
| <div id="menu_1.1.5.4" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/editors/htmlform.html">HTML Form Editor</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/editors/1form.html">HTML One Form Editor</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/editors/bxe.html">Bitflux Editor</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/editors/kupu.html">Kupu</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/editors/xopus.html">Xopus</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.5', '../../../skin/')" id="menu_1.1.5.5Title" class="menutitle">Layout</div> |
| <div id="menu_1.1.5.5" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/layout/navigation.html">Navigation</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/layout/xhtml-templating.html">XHTML templating</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/layout/static-resources.html">Serving static resources</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/layout/lenya-menubar.html">Lenya Menubar</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.6', '../../../skin/')" id="menu_1.1.5.6Title" class="menutitle">Publication</div> |
| <div id="menu_1.1.5.6" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/publication/pageenvelopemodule.html">PageEnvelopeModule</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/publication/siteTree.html">Site tree</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.7', '../../../skin/')" id="menu_1.1.5.7Title" class="menutitle">Resource Types</div> |
| <div id="menu_1.1.5.7" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/resource-types/resource-types.html">Resource Types</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.8', '../../../skin/')" id="menu_1.1.5.8Title" class="menutitle">Revision Control</div> |
| <div id="menu_1.1.5.8" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/revisioncontrol/revisioncontroller.html">Revision Controller</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/revisioncontrol/rcml.html">RCML</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/revisioncontrol/checkin.html">Check In</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/revisioncontrol/checkout.html">Check Out</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/revisioncontrol/version.html">Revisions</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/revisioncontrol/rollback.html">Rollback</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.9', '../../../skin/')" id="menu_1.1.5.9Title" class="menutitle">Repository</div> |
| <div id="menu_1.1.5.9" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/repository/index.html">WebDAV Servers</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.10', '../../../skin/')" id="menu_1.1.5.10Title" class="menutitle">Search</div> |
| <div id="menu_1.1.5.10" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/search/lucene.html">Searching with Lucene</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.11', '../../../skin/')" id="menu_1.1.5.11Title" class="menutitle">URI Handling</div> |
| <div id="menu_1.1.5.11" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/uri-handling/URIParametrizer.html">URI Parametrizer</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/uri-handling/standardURI.html">URI Scheme</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/uri-handling/usecases.html">Usecases</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.12', '../../../skin/')" id="menu_1.1.5.12Title" class="menutitle">Asset Management</div> |
| <div id="menu_1.1.5.12" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/asset-management/management.html">Asset Management</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.13', '../../../skin/')" id="menu_1.1.5.13Title" class="menutitle">Link Management</div> |
| <div id="menu_1.1.5.13" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/link-management/link-management.html">Link Management</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.14', '../../../skin/')" id="menu_1.1.5.14Title" class="menutitle">Meta Data</div> |
| <div id="menu_1.1.5.14" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/metadata/metadata.html">Meta Data Handling</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.15', '../../../skin/')" id="menu_1.1.5.15Title" class="menutitle">Multilingual Documents</div> |
| <div id="menu_1.1.5.15" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/multilingual/multilingual.html">Multilingual Document Handling</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.16', '../../../skin/')" id="menu_1.1.5.16Title" class="menutitle">Tasks</div> |
| <div id="menu_1.1.5.16" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/tasks/concept.html">The Task Concept</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/tasks/defining.html">Defining Tasks</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/tasks/taskaction.html">The TaskAction</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/tasks/scheduling.html">Scheduling a Task</a> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.16.5', '../../../skin/')" id="menu_1.1.5.16.5Title" class="menutitle">Included tasks</div> |
| <div id="menu_1.1.5.16.5" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/tasks/anttask.html">AntTask</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/tasks/publisher.html">DefaultFilePublisher</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/tasks/exporter.html">StaticHTMLExporter</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/tasks/mailtask.html">MailTask</a> |
| </div> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/tasks/development.html">Developing Tasks</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.17', '../../../skin/')" id="menu_1.1.5.17Title" class="menutitle">Workflow</div> |
| <div id="menu_1.1.5.17" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/workflow/terms.html">Terms</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/workflow/state-machine.html">The State Machine</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/workflow/configuration.html">Configuration</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/workflow/implementation.html">Implementation</a> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.5.18', '../../../skin/')" id="menu_1.1.5.18Title" class="menutitle">Site Management</div> |
| <div id="menu_1.1.5.18" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/sitemanagement/archive.html">Archive</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/sitemanagement/copy.html">Copy</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/sitemanagement/deactivate.html">Deactivate</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/sitemanagement/delete.html">Delete</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/sitemanagement/deletetrash.html">Delete the trash</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/sitemanagement/move.html">Move</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/sitemanagement/moveupdown.html">Move Up/Down</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/sitemanagement/rename.html">Rename</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/components/sitemanagement/restore.html">Restore</a> |
| </div> |
| </div> |
| </div> |
| <div onclick="SwitchMenu('menu_1.1.6', '../../../skin/')" id="menu_1.1.6Title" class="menutitle">Miscellaneous</div> |
| <div id="menu_1.1.6" class="menuitemgroup"> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/misc/namespaces.html">Namespaces</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/misc/reserved_names.html">Reserved Names</a> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../docs/1_2_x/misc/xinclude-processor.html">XInclude Processor</a> |
| </div> |
| </div> |
| <div class="menuitem"> |
| <a href="../../../apidocs/1.2/index.html">1.2 API (Javadoc)</a> |
| </div> |
| </div> |
| <div id="credit"></div> |
| <div id="roundbottom"> |
| <img style="display: none" class="corner" height="15" width="15" alt="" src="../../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div> |
| <!--+ |
| |alternative credits |
| +--> |
| <div id="credit2"> |
| <a href="http://wiki.apache.org/lenya/MeetingFreiburg2008"><img border="0" title="Meeting Freiburg 2008" alt="Meeting Freiburg 2008 - logo" src="../../../images/apache-lenya-meeting-freiburg-2008.png" style="width: 160px;height: 40px;"></a> |
| </div> |
| </div> |
| <!--+ |
| |end Menu |
| +--> |
| <!--+ |
| |start content |
| +--> |
| <div id="content"> |
| <div title="Portable Document Format" class="pdflink"> |
| <a class="dida" href="mod_proxy_and_lenya.pdf"><img alt="PDF -icon" src="../../../skin/images/pdfdoc.gif" class="skin"><br> |
| PDF</a> |
| </div> |
| <h1>Part 6a: mod_proxy and Lenya</h1> |
| <div id="front-matter"> |
| <div id="minitoc-area"> |
| <ul class="minitoc"> |
| <li> |
| <a href="#getting_lenya_installed_under_the_ROOT_context"> |
| Getting Lenya installed under the ROOT context</a> |
| </li> |
| <li> |
| <a href="#a_caveat_on_SSL">A caveat on SSL</a> |
| </li> |
| <li> |
| <a href="#authoring_environment">Authoring |
| environment</a> |
| </li> |
| <li> |
| <a href="#next_part">Next part</a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| |
| <p>We had mentioned that we were going to do articles on usecases and doctypes, but as we were |
| reconfiguring the newest version of Lenya (1.2.4 as of this writing) to be |
| installed under the ROOT context of Tomcat, we were again interested in going back |
| and fixing up our mod_proxy configurations so that the following would |
| happen:</p> |
| |
| |
| <ul> |
| |
| <li>You can access the authoring environment with |
| http://lenya.client.com/</li> |
| |
| <li>Any login requests to and subsequent usages of the authoring environment |
| are redirected to SSL for better security (no real certificate needed, |
| since just using it on inside)</li> |
| |
| <li>Each publication is a directory under one virtualhost for |
| http://www.client.com/, unless a new domain name or sub-domain name was |
| needed, like http://publication.client.com/, where a separate |
| virtualhost would be created pointing to that one publication</li> |
| |
| <li>A need for SSL pages on http://www.client.com/ (like form |
| submissions)</li> |
| |
| </ul> |
| |
| |
| <p>It seemed like a lot to ask for, and we wasn't sure how to go about getting it done. |
| Lucky for us (or so we thought), Lenya's documentation has a |
| <a href="http://wiki.apache.org/lenya/HowToModProxy">page on |
| mod_proxy</a> for a very similar configuration. As always, however, |
| making sense of the documentation was harder than the actual configuration. |
| Here's our attempt at explaining just how to get the above setup working.</p> |
| |
| |
| <a name="N10027"></a><a name="getting_lenya_installed_under_the_ROOT_context"></a> |
| <h2 class="h3"> |
| Getting Lenya installed under the ROOT context</h2> |
| <div class="section"> |
| <p>So, we were trying to make things a little cleaner for ourself and having Lenya be |
| the only web application installed under Tomcat. To do this, you'll have to |
| change a couple things in your local.build.properies file before building |
| Lenya (see |
| <a href="installing_lenya.html"> installing Lenya</a> for more |
| information):</p> |
| <ol> |
| |
| <li>Change the container from Jetty to Tomcat (new to |
| 1.2.4) |
| #web.app.server=Jettyweb.app.server=Tomcat</li> |
| |
| <li>Change the tomcat.webapps.dir line to the |
| following:tomcat.webapps.dir=${tomcat.home.dir}/webapps/ROOT</li> |
| |
| <li>Change the tomcat.cache.dir line to the |
| following:tomcat.cache.dir=${tomcat.home.dir}/work/Catalina/localhost</li> |
| |
| </ol> |
| <p>While the last line may seem strange, our thinking here was that since we are only |
| using Tomcat for Lenya, if we ever reset Lenya, then we'll just clean out the |
| whole work directory before starting Tomcat again.</p> |
| <p>Then install as always using ./build.sh. You'll have a shiny new |
| installation under the ROOT context, where you can now access Lenya with |
| http://lenya.client.com:8080/ (notice there's no 'lenya' at the end of |
| the URL now).</p> |
| </div> |
| <a name="N10045"></a><a name="a_caveat_on_SSL"></a> |
| <h2 class="h3">A caveat on SSL</h2> |
| <div class="section"> |
| <p>Yes, we know, there's always a caveat. Well, one thing the mod_proxy document |
| doesn't mention is that you can't have two different domains or sub-domains with |
| SSL ports opened on the same Apache instance and using the same IP address. For |
| example, if we want to host http://lenya.client.com/ and |
| http://www.client.com/ on the same Apache instance and they both have the same |
| IP address (this is Name-based Virtual Hosting in Apache), you would think you |
| could do this:</p> |
| <pre class="code"> |
| NameVirtualHost 192.168.1.100:80 |
| |
| <VirtualHost 192.168.1.100:80> |
| ServerName lenya.client.com |
| # rest of configuration goes here |
| </VirtualHost> |
| |
| <VirtualHost 192.168.1.100:443> |
| ServerName lenya.client.com |
| # rest of configuration goes here |
| </VirtualHost> |
| |
| <VirtualHost 192.168.1.100:80> |
| ServerName www.client.com |
| # rest of configuration goes here |
| </VirtualHost> |
| |
| <VirtualHost 192.168.1.100:443> |
| ServerName www.client.com |
| # rest of configuration goes here |
| </VirtualHost> |
| </pre> |
| <p>But in fact, you can't. The explanation for it is |
| <a href="http://httpd.apache.org/docs-2.0/ssl/ssl_faq.html#vhosts2"> |
| in Apache's documentation</a>. The way around this would be to either get |
| another IP address for www.client.com, or assign another port to |
| www.client.com's SSL connection (instead of using the default 443). So, in this |
| case, we are going to be using another IP address. To be perfectly honest, we are |
| actually going to split the authoring and live servers on to two physical |
| machines, but setting it up this way on one server using one Apache instance is |
| good enough for demonstration purposes.</p> |
| </div> |
| <a name="N10058"></a><a name="authoring_environment"></a> |
| <h2 class="h3">Authoring |
| environment</h2> |
| <div class="section"> |
| <p>So, for this first part, we want to be able to go to http://lenya.client.com/ and get |
| the first page of Lenya, where we can choose the publication we need to edit. Here's |
| what we have (it's nearly idential to the mod_proxy how-to document on Lenya's |
| website):</p> |
| <pre class="code"> |
| NameVirtualHost 192.168.1.100:80 |
| |
| <VirtualHost 192.168.1.100:80> |
| ServerName lenya.client.com |
| ServerAlias lenya |
| ProxyRequests Off |
| RewriteEngine On |
| RewriteLog logs/lenya.client.com.rewrite.log |
| RewriteLogLevel 0 |
| RewriteRule ^/([^/\.]+)$ $1/ [R] |
| RewriteRule ^/([^/\.]+)/$ http://lenya.client.com/$1/authoring/index.html [R,L] |
| RewriteCond %{QUERY_STRING} lenya\.usecase=login(.*) |
| RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L] |
| RewriteRule ^/(.*) http://lenya.client.com:8080/$1 [P,L] |
| ProxyPassReverse / http://lenya.client.com:8080/ |
| </VirtualHost> |
| |
| <VirtualHost 192.168.1.100:443> |
| ServerName lenya.client.com |
| ServerAlias lenya |
| ProxyRequests Off |
| RewriteEngine On |
| RewriteLog logs/ssl.lenya.client.com.rewrite.log |
| RewriteLogLevel 0 |
| RewriteRule ^/([^/\.]+)$ $1/ [R] |
| RewriteRule ^/([^/\.]+)/$ http://lenya.client.com/$1/authoring/index.html [R,L] |
| RewriteRule ^/(.*) http://%{SERVER_NAME}:8080/$1 [P,L] |
| ProxyPassReverse / http://lenya.client.com:8080/ |
| </VirtualHost> |
| </pre> |
| <p>Let's step through this quickly. We setup our name-based virtual host for the IP |
| address assigned to lenya.client.com:</p> |
| <pre class="code"> NameVirtualHost 192.168.1.100:80 |
| </pre> |
| <p>In the first virtual host (the non-SSL one on port 80), we give it a name of |
| lenya.client.com, keep proxy requests off (so that it's only a reverse proxy, |
| not a forwarding one), and then turn on the rewriting engine to enable to rewrite |
| URLs. We also setup a log for the rewrites, but since the log level is 0, it won't |
| actually log anything.</p> |
| <p>The first group of RewriteRules are for convenience's sake, really. They match |
| everything after but up to the first forward slash that doesn't have a dot in it. In |
| other words, it's trying to match a directory, like this:</p> |
| <pre class="code"> http://lenya.client.com/default |
| </pre> |
| <p>If it matches, it resends it as |
| http://lenya.client.com/default/authoring/index.html, meaning that it |
| goes through the whole rigamarole of matching again inside the VirtualHost. |
| Well, whenever you access the authoring environment for the first time, Lenya |
| checks to see if there's a session of you being logged in. Since there probably |
| isn't, it forwards you an address where "lenya.usecase=login" |
| something-or-another is appended to it. And that's where the second group of |
| Rewrites comes in. See the RewriteCond? It checks to see if the query string of the |
| URL has that pattern. If it does, it send it off to the SSL portion (see the https?). |
| The rest of it gets sent back to the reverse proxy, where the content is grabbed |
| from port 8080 where Tomcat is installed.</p> |
| <p>In the VirtualHost section for SSL on lenya.client.com, it's pretty much exactly |
| the same. If you try to hit the SSL port with just a directory, like so:</p> |
| <pre class="code"> https://lenya.client.com/default |
| |
| </pre> |
| <p>It rewrites the URL as |
| http://lenya.client.com/default/authoring/index.html. Here, again, it |
| goes back to the first VirtualHost, and if you aren't logged in, it eventually |
| takes you back to the SSL portion of the site to login. Otherwise, it matches |
| everything and sends it through the reverse proxy on port 8080. So, once you login |
| through SSL, you stay in SSL for all your editing.</p> |
| </div> |
| <a name="N10082"></a><a name="next_part"></a> |
| <h2 class="h3">Next part</h2> |
| <div class="section"> |
| <p>This article turned out to be quite long, so the next time around, which should be |
| very shortly, we will post the second half on configuring the live server |
| mod_proxy config. |
| </p> |
| </div> |
| |
| </div> |
| <!--+ |
| |end content |
| +--> |
| <div class="clearboth"> </div> |
| </div> |
| <div id="footer"> |
| <!--+ |
| |start bottomstrip |
| +--> |
| <div class="lastmodified"> |
| <script type="text/javascript"><!-- |
| document.write("Last Published: " + document.lastModified); |
| // --></script> |
| </div> |
| <div class="copyright"> |
| Copyright © |
| 2002-2007 <a href="http://www.apache.org/licenses/LICENSE-2.0">The Apache Software Foundation.</a> |
| </div> |
| <div id="feedback"> |
| Send feedback about the website to: |
| <a id="feedbackto" href="mailto:dev@lenya.apache.org?subject=Feedback%C2%A0for%C2%A0docs/1_2_x/tutorial/mod_proxy_and_lenya.html">dev@lenya.apache.org</a> |
| </div> |
| <!--+ |
| |end bottomstrip |
| +--> |
| </div> |
| </body> |
| </html> |