HTTP-LISTENER is the object in Araneida responsible for listening to a TCP port and reading requests that come in. When it gets a request, it calls a handler to process it.
It is possible to have more than one http-listener if you are publishing on more than one address or port. Multiple http-listeners may share the same handler, if you wich to publish the same content on many endpoints.
There are presently two concrete implementations of the http-listener interface: THREADED-HTTP-LISTENER (only available if your SBCL has the SB-THREAD feature) and SERVE-EVENT-HTTP-LISTENER. Both of these operate 'in the background' - i.e. without interfering with your interactive use of Lisp, but the serve-event listener blocks requests while it's processing, so is only appropriate if your responses come back in reasonably short time. On the other hand, it's seen a lot more use and is likely to be much more stable at present.
If you are using a reverse proxy (e.g. Apache's mod_proxy) in front of Araneida, you will probably want to use {THREADED,SERVE-EVENT}-REVERSE-PROXY-LISTENER. These have an additional TRANSLATIONS slot - this is a list whose elements are urlstrings mapping from the external URL hierarchy that the proxy is configured for to the internal URL that Araneida is listening for. For example,
:translations '(("http://www.examples.com/" "http://www.internal:8000/") ("http://images.examples.com/" "http://images.internal:8000/")
There are two reasons to use this:
Apache mod_proxy can also cache your responses when so configured. See the documentation on HTTP caching for details.
See example.lisp to learn most of what you need to know about http listeners.