While it’s terribly convenient that Instiki comes with its own built-in webserver, there are some drawbacks:
Whatever the reason, the easiest “step up” from a vanilla Instiki installation is to set up Apache to proxy for Instiki. This website used to run this way. Now, we run Passenger, which has a number of advantages.
Below are the configuration directives to set up proxying.
In your httpd.conf file, enable proxying
<IfModule mod_proxy.c>
ProxyRequests Off
<Proxy *>
Require all granted
</Proxy>
</IfModule>
If you’re able, install the Apache 2.x x-sendfile module.
Then, for each wiki you want to proxy (e.g., this one):
<Location /instiki>
Require all granted
ProxyPass http://127.0.0.1:2500/instiki
ProxyPassReverse http://golem.ph.utexas.edu:2500/instiki
ProxyPassReverseCookieDomain golem.ph.utexas.edu golem.ph.utexas.edu
ProxyPassReverseCookiePath / /instiki/
<IfModule mod_xsendfile.c>
RequestHeader Set X-Sendfile-Type X-Sendfile
XSendFile on
XSendFileAllowAbove on
</IfModule>
</Location>
In addition, you need to proxy the following directories (common to all your Wikis):
<Location /stylesheets>
Require all granted
ProxyPass http://127.0.0.1:2500/stylesheets
ProxyPassReverse http://golem.ph.utexas.edu:2500/stylesheets
</Location>
<Location /s5>
Require all granted
ProxyPass http://127.0.0.1:2500/s5
ProxyPassReverse http://golem.ph.utexas.edu:2500/s5
</Location>
<Location /javascripts>
Require all granted
ProxyPass http://127.0.0.1:2500/javascripts
ProxyPassReverse http://golem.ph.utexas.edu:2500/javascripts
</Location>
<Location /create_web>
Require all granted
ProxyPass http://127.0.0.1:2500/create_web
ProxyPassReverse http://golem.ph.utexas.edu:2500/create_web
ProxyPassReverseCookieDomain golem.ph.utexas.edu golem.ph.utexas.edu
</Location>
<Location /svg-edit>
Require all granted
ProxyPass http://127.0.0.1:2500/svg-edit
ProxyPassReverse http://golem.ph.utexas.edu:2500/svg-edit
</Location>
Please note that these instructions were for Apache 2.3.x. For Apache 2.2.x and earlier, replace the lines
Require all granted
with
Order Allow,Deny
Allow from all
The same proxying recipe works, whether you use the built-in WEBrick server or Mongrel.