Since a single instance of Apache may be called on to handle a request for any of the configured virtual hosts (or the main host), a structure is defined that holds the information related to each host. This structure, server_rec, is defined in httpd.h:
struct server_rec {
server_rec *next;
/* Description of where the definition came from */
const char *defn_name;
unsigned defn_line_number;
/* Full locations of server config info */
char *srm_confname;
char *access_confname;
/* Contact information */
char *server_admin;
char *server_hostname;
unsigned short port; /* For redirects, etc. */
/* Log files --- note that transfer log is now in the modules... */
char *error_fname;
FILE *error_log;
int loglevel;
/* Module-specific configuration for server, and defaults... */
int is_virtual; /* True if this is the virtual server */
void *module_config; /* Config vector containing pointers to
* modules' per-server config structures.
*/
void *lookup_defaults; /* MIME type info, etc., before we start
* checking per-directory info.
*/
/* Transaction handling */
server_addr_rec *addrs;
int timeout; /* Timeout, in seconds, before we give up */
int keep_alive_timeout; /* Seconds we'll wait for another request */
int keep_alive_max; /* Maximum requests per connection */
int keep_alive; /* Maximum requests per connection */
int send_buffer_size; /* Size of TCP send buffer (in bytes) */
char *path; /* Pathname for ServerPath */
int pathlen; /* Length of path */
char *names; /* Normal names for ServerAlias servers */
array_header *wild_names; /* Wildcarded names for ServerAlias servers
*/
uid_t server_uid; /* Effective user ID when calling exec wrapper */
gid_t server_gid; /* Effective group ID when calling exec wrapper */
};
Most of this structure is used by the Apache core, but each module can also have a per-server configuration, which is accessed via the module_config member, using ap_get_module_config( ). Each module creates this per-module configuration structure itself, so it has complete control over its size and contents.
Copyright © 2003 O'Reilly & Associates. All rights reserved.