Apache can run with either external or internal modules.
External: An external module contains a set of functions that are wrapped up into a separate executable file. Having a module as a separate file allows the administrator to add, replace, or remove the module as needed. If a newer version of a module becomes available, the administrator can simply copy the new executable file into the volume:\apache2\modules directory and restart the server. On NetWare, an executable file has an NLMâ„¢ extension. For example, mod_cache.nlm.
Internal (or built-in): Like an external module, an internal module also contains a set of functions. However, those functions are compiled into the Apache executable when it is compiled from the Apache source code.
HINT:An external module can be compiled directly into the Apache executable by simply including the source as part of the core Apache code.
Except for the compilation difference, internal and external modules function the same in your Apache Web server.
Requests received by the Apache Web server must pass through a series of stages in order for them to be completely handled. The architecture of Apache allows a module to insert itself into any one or more of these stages. Three of these stages deal with Web server security: access control, authentication, and authorization. There are currently various Apache modules available that supply handlers for one or more of these stages in order to give the Apache Web server a certain level of security.
For more information about security on Apache, see Authentication, Authorization and Access Control on the Apache.org Web site.