Abstract

All web servers that I am familiar with have distinctly different mechanism for translating URLs into files on disk, configuring authentication of various kinds, scripts, and other things that deal with the URL. AWS managed to do all of these things with a single type of statement - a map.

Maps are similar to the "alias" mechanism in many servers, that map URLs to a disk directory other than the server root. They differ from such mechanisms in two distinct ways:

  1. Maps do not fail; they either handle a request or they don't. If they don't, the server continues trying maps.
  2. Maps invoke a module to handle the request; the module may invoke other modules.

This paper examines maps to show that these two features suffice to allow maps to handle all of the configuration options named above, and to combine in surprisingly powerfull ways. Indeed, commonly requested abilities that others servers may not provide, or provide only with difficulty, are trivial combinations of maps.


Next, Contents

Mike Meyer