server_rec 구조체는 서버의 동작에 관한 정보를 갖는다.
이 정보는 VirtualHost 정보와는 다른 것이다.
우리가 만든 Handler는 runtime에 서버 정보를 argument list의 형태로 전달 받는다.
그리고 일반적으로 server_rec에 포함된 정보는 읽기전용이므로 직접수정하면 대략 난감~
struct server_rec {
server_rec *next;
/*
* Virtual Server 설정 정보는 linked list로 저장된다.
* server_rec *next를 통해 이 정보에 접근할 수 있다.
* 예)각각의 virtual server마다 다른 log file을 open하기.
void my_module_init(server_rec *main_server, pool *p)
{
server_res *s ;
for( s=main_server; s; s=s->next )
{
my_open_log(s,p);
}
}
*/
const char *defn_name;
unsigned defn_line_number;
char *srm_confname;
char *access_confname;
/*
* 위 두개의 변수에는 resource, access 설정파일의 경로정보가 들어간다.
* 절대경로 또는 상대경로 일 수 있다.
* ap_server_root_relative()함수를 사용하면 절대경로값으로 변경된다.
* httpd.conf파일의 경로는 ap_server_confname라는 global변수에 있다.
*/
char *server_admin;
/* httpd.conf의 ServerAdmin지시자의 값 */
char *server_hostname;
/* 호스트의 이름. ap_get_server_name()함수를 사용하는편이 낫다. */
unsigned short port;
/*
* 웹서버가 listen하고 있는 포트번호.
* 만약 여러개의 포트를 listen하고 있다면 이 값은 모든 포트번호를
* 갖고 있지 않고, 서버로 redirect하기위해 사용되는 포트번호만 갖게된다.
*/
char *error_fname;
FILE *error_log;
int loglevel;
/*
* 위 세개의 값은 에러로그의 정보를 나타낼때 사용된다.
* error_fname은 로그파일의 경로.
* error_log는 로그파일의 FILE *open된 값.
* loglevel 1~8의 정수값으로, 얼마나 자세히 메세지를 남길지를 나타낸다.
*/
int is_virtual;
/* VirtualHost로 서버가 세팅되었다면 0이 아닌 값 */
void *module_config;
/* 모듈의 per-server config structure 정보. */
void *lookup_defaults;
/* Apache core가 환경설정정보를 읽어오는 과정에서 사용된 정보를 담고있는
* 데이터블럭
* 각각의 reqeust record들의 per_dir_config를 복사.
* 각각의 모듈에서 사용되는 per-directory 설정정보를 갖고있다.
* MIME type info, etc., before we start,checking per-directory info
*/
server_addr_rec *addrs;
int timeout;
int keep_alive_timeout;
int keep_alive_max;
int keep_alive;
/*
* Timeout - in seconds, before we give up
* keep_alive-timeout - Seconds we'll wait for another request
* Maximum requests per connection
* Use persistent connections
*/
int send_buffer_size;
/* size of TCP send buffer (in bytes) */
char *path;
/* Pathname for ServerPath */
int pathlen;
/* Length of path */
array_header *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 */
int limit_req_line;
/* limit on size of the HTTP request line */
int limit_req_fieldsize;
/* limit on size of any request header field */
int limit_req_fields;
/* limit on number of request header fields */
};
이 정보는 VirtualHost 정보와는 다른 것이다.
우리가 만든 Handler는 runtime에 서버 정보를 argument list의 형태로 전달 받는다.
그리고 일반적으로 server_rec에 포함된 정보는 읽기전용이므로 직접수정하면 대략 난감~
struct server_rec {
server_rec *next;
/*
* Virtual Server 설정 정보는 linked list로 저장된다.
* server_rec *next를 통해 이 정보에 접근할 수 있다.
* 예)각각의 virtual server마다 다른 log file을 open하기.
void my_module_init(server_rec *main_server, pool *p)
{
server_res *s ;
for( s=main_server; s; s=s->next )
{
my_open_log(s,p);
}
}
*/
const char *defn_name;
unsigned defn_line_number;
char *srm_confname;
char *access_confname;
/*
* 위 두개의 변수에는 resource, access 설정파일의 경로정보가 들어간다.
* 절대경로 또는 상대경로 일 수 있다.
* ap_server_root_relative()함수를 사용하면 절대경로값으로 변경된다.
* httpd.conf파일의 경로는 ap_server_confname라는 global변수에 있다.
*/
char *server_admin;
/* httpd.conf의 ServerAdmin지시자의 값 */
char *server_hostname;
/* 호스트의 이름. ap_get_server_name()함수를 사용하는편이 낫다. */
unsigned short port;
/*
* 웹서버가 listen하고 있는 포트번호.
* 만약 여러개의 포트를 listen하고 있다면 이 값은 모든 포트번호를
* 갖고 있지 않고, 서버로 redirect하기위해 사용되는 포트번호만 갖게된다.
*/
char *error_fname;
FILE *error_log;
int loglevel;
/*
* 위 세개의 값은 에러로그의 정보를 나타낼때 사용된다.
* error_fname은 로그파일의 경로.
* error_log는 로그파일의 FILE *open된 값.
* loglevel 1~8의 정수값으로, 얼마나 자세히 메세지를 남길지를 나타낸다.
*/
int is_virtual;
/* VirtualHost로 서버가 세팅되었다면 0이 아닌 값 */
void *module_config;
/* 모듈의 per-server config structure 정보. */
void *lookup_defaults;
/* Apache core가 환경설정정보를 읽어오는 과정에서 사용된 정보를 담고있는
* 데이터블럭
* 각각의 reqeust record들의 per_dir_config를 복사.
* 각각의 모듈에서 사용되는 per-directory 설정정보를 갖고있다.
* MIME type info, etc., before we start,checking per-directory info
*/
server_addr_rec *addrs;
int timeout;
int keep_alive_timeout;
int keep_alive_max;
int keep_alive;
/*
* Timeout - in seconds, before we give up
* keep_alive-timeout - Seconds we'll wait for another request
* Maximum requests per connection
* Use persistent connections
*/
int send_buffer_size;
/* size of TCP send buffer (in bytes) */
char *path;
/* Pathname for ServerPath */
int pathlen;
/* Length of path */
array_header *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 */
int limit_req_line;
/* limit on size of the HTTP request line */
int limit_req_fieldsize;
/* limit on size of any request header field */
int limit_req_fields;
/* limit on number of request header fields */
};