Apache HTTPD
Macros | Functions | Variables
mod_proxy.c File Reference
#include "mod_proxy.h"
#include "mod_core.h"
#include "apr_optional.h"
#include "apr_strings.h"
#include "scoreboard.h"
#include "mod_status.h"
#include "proxy_util.h"
#include "mod_ssl.h"

Go to the source code of this file.

Macros

#define MAX(x, y)   ((x) >= (y) ? (x) : (y))
 

Functions

static const charset_worker_param (apr_pool_t *p, server_rec *s, proxy_worker *worker, const char *key, const char *val)
 
static const charset_balancer_param (proxy_server_conf *conf, apr_pool_t *p, proxy_balancer *balancer, const char *key, const char *val)
 
static int alias_match (const char *uri, const char *alias_fakename)
 
static int alias_match_servlet (apr_pool_t *p, const char **urip, const char *alias)
 
static int proxy_detect (request_rec *r)
 
int ap_proxy_trans_match (request_rec *r, struct proxy_alias *ent, proxy_dir_conf *dconf)
 
static int proxy_trans (request_rec *r, int pre_trans)
 
static int proxy_pre_translate_name (request_rec *r)
 
static int proxy_translate_name (request_rec *r)
 
static int proxy_walk (request_rec *r)
 
static int proxy_map_location (request_rec *r)
 
static int proxy_fixup (request_rec *r)
 
static int proxy_needsdomain (request_rec *r, const char *url, const char *domain)
 
static int proxy_handler (request_rec *r)
 
static void * create_proxy_config (apr_pool_t *p, server_rec *s)
 
static apr_array_header_tmerge_balancers (apr_pool_t *p, apr_array_header_t *base, apr_array_header_t *overrides)
 
static void * merge_proxy_config (apr_pool_t *p, void *basev, void *overridesv)
 
static const charset_source_address (cmd_parms *parms, void *dummy, const char *arg)
 
static void * create_proxy_dir_config (apr_pool_t *p, char *dummy)
 
static int int_order (const void *i1, const void *i2)
 
static void * merge_proxy_dir_config (apr_pool_t *p, void *basev, void *addv)
 
static const charadd_proxy (cmd_parms *cmd, void *dummy, const char *f1, const char *r1, const char *creds, int regex)
 
static const charadd_proxy_noregex (cmd_parms *cmd, void *dummy, const char *f1, const char *r1, const char *creds)
 
static const charadd_proxy_regex (cmd_parms *cmd, void *dummy, const char *f1, const char *r1, const char *creds)
 
const charap_proxy_de_socketfy (apr_pool_t *p, const char *url)
 
static const charadd_pass (cmd_parms *cmd, void *dummy, const char *arg, int is_regex)
 
static const charadd_pass_noregex (cmd_parms *cmd, void *dummy, const char *arg)
 
static const charadd_pass_regex (cmd_parms *cmd, void *dummy, const char *arg)
 
static const charadd_pass_reverse (cmd_parms *cmd, void *dconf, const char *f, const char *r, const char *i)
 
static const charcookie_path (cmd_parms *cmd, void *dconf, const char *f, const char *r, const char *interp)
 
static const charcookie_domain (cmd_parms *cmd, void *dconf, const char *f, const char *r, const char *interp)
 
static const charset_proxy_exclude (cmd_parms *parms, void *dummy, const char *arg)
 
static const charset_proxy_dirconn (cmd_parms *parms, void *dummy, const char *arg)
 
static const charset_proxy_domain (cmd_parms *parms, void *dummy, const char *arg)
 
static const charset_proxy_req (cmd_parms *parms, void *dummy, int flag)
 
static const charset_proxy_error_override (cmd_parms *parms, void *dconf, const char *arg)
 
static const charadd_proxy_http_headers (cmd_parms *parms, void *dconf, int flag)
 
static const charset_preserve_host (cmd_parms *parms, void *dconf, int flag)
 
static const charforward_100_continue (cmd_parms *parms, void *dconf, int flag)
 
static const charset_recv_buffer_size (cmd_parms *parms, void *dummy, const char *arg)
 
static const charset_io_buffer_size (cmd_parms *parms, void *dummy, const char *arg)
 
static const charset_max_forwards (cmd_parms *parms, void *dummy, const char *arg)
 
static const charset_proxy_timeout (cmd_parms *parms, void *dummy, const char *arg)
 
static const charset_via_opt (cmd_parms *parms, void *dummy, const char *arg)
 
static const charset_bad_opt (cmd_parms *parms, void *dummy, const char *arg)
 
static const charset_status_opt (cmd_parms *parms, void *dummy, const char *arg)
 
static const charset_bgrowth (cmd_parms *parms, void *dummy, const char *arg)
 
static const charset_persist (cmd_parms *parms, void *dummy, int flag)
 
static const charset_inherit (cmd_parms *parms, void *dummy, int flag)
 
static const charset_ppinherit (cmd_parms *parms, void *dummy, int flag)
 
static const charadd_member (cmd_parms *cmd, void *dummy, const char *arg)
 
static const charset_proxy_param (cmd_parms *cmd, void *dummy, const char *arg)
 
static void ap_add_per_proxy_conf (server_rec *s, ap_conf_vector_t *dir_config)
 
static const charproxysection (cmd_parms *cmd, void *mconfig, const char *arg)
 
int ap_proxy_ssl_enable (conn_rec *c)
 
int ap_proxy_ssl_disable (conn_rec *c)
 
int ap_proxy_ssl_engine (conn_rec *c, ap_conf_vector_t *per_dir_config, int enable)
 
int ap_proxy_conn_is_https (conn_rec *c)
 
const charap_proxy_ssl_val (apr_pool_t *p, server_rec *s, conn_rec *c, request_rec *r, const char *var)
 
static int proxy_post_config (apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *main_s)
 
static int proxy_status_hook (request_rec *r, int flags)
 
static void child_init (apr_pool_t *p, server_rec *s)
 
static int proxy_pre_config (apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp)
 
static void register_hooks (apr_pool_t *p)
 
void proxy_hook_scheme_handler (proxy_HOOK_scheme_handler_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
 
apr_array_header_tproxy_hook_get_scheme_handler (void)
 
int proxy_run_scheme_handler (request_rec *r, proxy_worker *worker, proxy_server_conf *conf, char *url, const char *proxyhost, apr_port_t proxyport)
 
void proxy_hook_check_trans (proxy_HOOK_check_trans_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
 
apr_array_header_tproxy_hook_get_check_trans (void)
 
int proxy_run_check_trans (request_rec *r, const char *url)
 
void proxy_hook_canon_handler (proxy_HOOK_canon_handler_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
 
apr_array_header_tproxy_hook_get_canon_handler (void)
 
int proxy_run_canon_handler (request_rec *r, char *url)
 
void proxy_hook_pre_request (proxy_HOOK_pre_request_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
 
apr_array_header_tproxy_hook_get_pre_request (void)
 
int proxy_run_pre_request (proxy_worker **worker, proxy_balancer **balancer, request_rec *r, proxy_server_conf *conf, char **url)
 
void proxy_hook_post_request (proxy_HOOK_post_request_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
 
apr_array_header_tproxy_hook_get_post_request (void)
 
int proxy_run_post_request (proxy_worker *worker, proxy_balancer *balancer, request_rec *r, proxy_server_conf *conf)
 
int proxy_run_section_post_config (apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s, ap_conf_vector_t *section_config)
 
int proxy_run_fixups (request_rec *r)
 
int proxy_run_request_status (int *status, request_rec *r)
 

Variables

static apr_OFN_set_worker_hc_param_tset_worker_hc_param_f = NULL
 
proxy_hcmethods_t proxy_hcmethods []
 
proxy_wstat_t proxy_wstat_tbl []
 
static const char *const proxy_id = "proxy"
 
apr_global_mutex_tproxy_mutex = NULL
 
static const command_rec proxy_cmds []
 
static apr_OFN_ssl_proxy_enable_tproxy_ssl_enable = NULL
 
static apr_OFN_ssl_engine_disable_tproxy_ssl_disable = NULL
 
static apr_OFN_ssl_engine_set_tproxy_ssl_engine = NULL
 
static int *const aplog_module_index = &( proxy_module.module_index)
 
struct { 
 
   apr_array_header_t *   link_scheme_handler 
 
   apr_array_header_t *   link_canon_handler 
 
   apr_array_header_t *   link_pre_request 
 
   apr_array_header_t *   link_post_request 
 
   apr_array_header_t *   link_request_status 
 
   apr_array_header_t *   link_check_trans 
 
_hooks 
 

Macro Definition Documentation

◆ MAX

#define MAX (   x,
  y 
)    ((x) >= (y) ? (x) : (y))

Definition at line 36 of file mod_proxy.c.

Function Documentation

◆ add_member()

static const char * add_member ( cmd_parms cmd,
void *  dummy,
const char arg 
)
static

< Forbidden in .htaccess files

Definition at line 2602 of file mod_proxy.c.

◆ add_pass()

static const char * add_pass ( cmd_parms cmd,
void *  dummy,
const char arg,
int  is_regex 
)
static

< Forbidden in <Directory>

< Forbidden in <Files> or <If>

unused

Definition at line 1969 of file mod_proxy.c.

◆ add_pass_noregex()

static const char * add_pass_noregex ( cmd_parms cmd,
void *  dummy,
const char arg 
)
static

Definition at line 2171 of file mod_proxy.c.

◆ add_pass_regex()

static const char * add_pass_regex ( cmd_parms cmd,
void *  dummy,
const char arg 
)
static

Definition at line 2177 of file mod_proxy.c.

◆ add_pass_reverse()

static const char * add_pass_reverse ( cmd_parms cmd,
void *  dconf,
const char f,
const char r,
const char i 
)
static

< Forbidden in <Directory>

< Forbidden in <Files> or <If>

Definition at line 2183 of file mod_proxy.c.

◆ add_proxy()

static const char * add_proxy ( cmd_parms cmd,
void *  dummy,
const char f1,
const char r1,
const char creds,
int  regex 
)
static

unused

Definition at line 1859 of file mod_proxy.c.

◆ add_proxy_http_headers()

static const char * add_proxy_http_headers ( cmd_parms parms,
void *  dconf,
int  flag 
)
static

Definition at line 2411 of file mod_proxy.c.

◆ add_proxy_noregex()

static const char * add_proxy_noregex ( cmd_parms cmd,
void *  dummy,
const char f1,
const char r1,
const char creds 
)
static

Definition at line 1926 of file mod_proxy.c.

◆ add_proxy_regex()

static const char * add_proxy_regex ( cmd_parms cmd,
void *  dummy,
const char f1,
const char r1,
const char creds 
)
static

Definition at line 1932 of file mod_proxy.c.

◆ alias_match()

static int alias_match ( const char uri,
const char alias_fakename 
)
static

Definition at line 532 of file mod_proxy.c.

◆ alias_match_servlet()

static int alias_match_servlet ( apr_pool_t p,
const char **  urip,
const char alias 
)
static

Definition at line 588 of file mod_proxy.c.

◆ ap_add_per_proxy_conf()

static void ap_add_per_proxy_conf ( server_rec s,
ap_conf_vector_t dir_config 
)
static

Definition at line 2807 of file mod_proxy.c.

◆ child_init()

static void child_init ( apr_pool_t p,
server_rec s 
)
static

Definition at line 3245 of file mod_proxy.c.

◆ cookie_domain()

static const char * cookie_domain ( cmd_parms cmd,
void *  dconf,
const char f,
const char r,
const char interp 
)
static

Definition at line 2235 of file mod_proxy.c.

◆ cookie_path()

static const char * cookie_path ( cmd_parms cmd,
void *  dconf,
const char f,
const char r,
const char interp 
)
static

Definition at line 2222 of file mod_proxy.c.

◆ create_proxy_config()

static void * create_proxy_config ( apr_pool_t p,
server_rec s 
)
static

Definition at line 1555 of file mod_proxy.c.

◆ create_proxy_dir_config()

static void * create_proxy_dir_config ( apr_pool_t p,
char dummy 
)
static

Definition at line 1777 of file mod_proxy.c.

◆ forward_100_continue()

static const char * forward_100_continue ( cmd_parms parms,
void *  dconf,
int  flag 
)
static

Definition at line 2428 of file mod_proxy.c.

◆ int_order()

static int int_order ( const void *  i1,
const void *  i2 
)
static

Definition at line 1802 of file mod_proxy.c.

◆ merge_balancers()

static apr_array_header_t * merge_balancers ( apr_pool_t p,
apr_array_header_t base,
apr_array_header_t overrides 
)
static

Definition at line 1602 of file mod_proxy.c.

◆ merge_proxy_config()

static void * merge_proxy_config ( apr_pool_t p,
void *  basev,
void *  overridesv 
)
static

Definition at line 1695 of file mod_proxy.c.

◆ merge_proxy_dir_config()

static void * merge_proxy_dir_config ( apr_pool_t p,
void *  basev,
void *  addv 
)
static

Definition at line 1807 of file mod_proxy.c.

◆ proxy_detect()

static int proxy_detect ( request_rec r)
static

< Standard proxy

< Standard proxy

< Module declines to handle

Definition at line 791 of file mod_proxy.c.

◆ proxy_fixup()

static int proxy_fixup ( request_rec r)
static

< Module declines to handle

Definition at line 1159 of file mod_proxy.c.

◆ proxy_handler()

static int proxy_handler ( request_rec r)
static

< Module declines to handle

< Module declines to handle

< Reverse proxy

< Module has handled this stage.

< Module has handled this stage.

< Module has handled this stage.

RFC 2616: HTTP

< No proxy

< Module has handled this stage.

< No proxy

< Module has handled this stage.

RFC 2616: HTTP

< Module has handled this stage.

< Module declines to handle

< Module has handled this stage.

< Module declines to handle

< Module has handled this stage.

< Module has served the response completely * - it's safe to die() with no more output

Definition at line 1213 of file mod_proxy.c.

◆ proxy_map_location()

static int proxy_map_location ( request_rec r)
static

< Module declines to handle

< Module has handled this stage.

Definition at line 1135 of file mod_proxy.c.

◆ proxy_needsdomain()

static int proxy_needsdomain ( request_rec r,
const char url,
const char domain 
)
static

RFC 2616: HTTP

< Module declines to handle

< Module declines to handle

Definition at line 1175 of file mod_proxy.c.

◆ proxy_post_config()

static int proxy_post_config ( apr_pool_t pconf,
apr_pool_t plog,
apr_pool_t ptemp,
server_rec main_s 
)
static

< Module has handled this stage.

< Module declines to handle

< Module has handled this stage.

Definition at line 3087 of file mod_proxy.c.

◆ proxy_pre_config()

static int proxy_pre_config ( apr_pool_t pconf,
apr_pool_t plog,
apr_pool_t ptemp 
)
static

< Module has handled this stage.

Definition at line 3327 of file mod_proxy.c.

◆ proxy_pre_translate_name()

static int proxy_pre_translate_name ( request_rec r)
static

Definition at line 1049 of file mod_proxy.c.

◆ proxy_status_hook()

static int proxy_status_hook ( request_rec r,
int  flags 
)
static

< Module has handled this stage.

< Module has handled this stage.

Definition at line 3127 of file mod_proxy.c.

◆ proxy_trans()

static int proxy_trans ( request_rec r,
int  pre_trans 
)
static

< Module has served the response completely * - it's safe to die() with no more output

< Module has handled this stage.

< Module declines to handle

< Module declines to handle

< Module declines to handle

< Module declines to handle

Definition at line 979 of file mod_proxy.c.

◆ proxy_translate_name()

static int proxy_translate_name ( request_rec r)
static

Definition at line 1054 of file mod_proxy.c.

◆ proxy_walk()

static int proxy_walk ( request_rec r)
static

< Module has handled this stage.

Definition at line 1059 of file mod_proxy.c.

◆ proxysection()

static const char * proxysection ( cmd_parms cmd,
void *  mconfig,
const char arg 
)
static

< Forbidden in <Limit>

< Forbidden in <Directory>

< Forbidden in <Location>

< Forbidden in <Files> or <If>

< Forbidden in <Proxy>

< *.conf inside <Directory> or <Location> and .htaccess when AllowOverride Limit

< *.conf anywhere and .htaccess when AllowOverride Options

< *.conf anywhere and .htaccess when AllowOverride FileInfo

< *.conf inside <Directory> or <Location> and .htaccess when AllowOverride AuthConfig

< *.conf anywhere and .htaccess when AllowOverride Indexes

< *.conf inside <Directory> or <Location>

< *.conf inside <Proxy> only

unused

< suggested prefix for ap_regname

Definition at line 2816 of file mod_proxy.c.

◆ register_hooks()

static void register_hooks ( apr_pool_t p)
static

Definition at line 3345 of file mod_proxy.c.

◆ set_bad_opt()

static const char * set_bad_opt ( cmd_parms parms,
void *  dummy,
const char arg 
)
static

Definition at line 2517 of file mod_proxy.c.

◆ set_balancer_param()

static const char * set_balancer_param ( proxy_server_conf conf,
apr_pool_t p,
proxy_balancer balancer,
const char key,
const char val 
)
static

Definition at line 365 of file mod_proxy.c.

◆ set_bgrowth()

static const char * set_bgrowth ( cmd_parms parms,
void *  dummy,
const char arg 
)
static

Definition at line 2558 of file mod_proxy.c.

◆ set_inherit()

static const char * set_inherit ( cmd_parms parms,
void *  dummy,
int  flag 
)
static

Definition at line 2582 of file mod_proxy.c.

◆ set_io_buffer_size()

static const char * set_io_buffer_size ( cmd_parms parms,
void *  dummy,
const char arg 
)
static

Definition at line 2452 of file mod_proxy.c.

◆ set_max_forwards()

static const char * set_max_forwards ( cmd_parms parms,
void *  dummy,
const char arg 
)
static

Definition at line 2466 of file mod_proxy.c.

◆ set_persist()

static const char * set_persist ( cmd_parms parms,
void *  dummy,
int  flag 
)
static

Definition at line 2573 of file mod_proxy.c.

◆ set_ppinherit()

static const char * set_ppinherit ( cmd_parms parms,
void *  dummy,
int  flag 
)
static

Definition at line 2592 of file mod_proxy.c.

◆ set_preserve_host()

static const char * set_preserve_host ( cmd_parms parms,
void *  dconf,
int  flag 
)
static

Definition at line 2419 of file mod_proxy.c.

◆ set_proxy_dirconn()

static const char * set_proxy_dirconn ( cmd_parms parms,
void *  dummy,
const char arg 
)
static

Definition at line 2286 of file mod_proxy.c.

◆ set_proxy_domain()

static const char * set_proxy_domain ( cmd_parms parms,
void *  dummy,
const char arg 
)
static

Definition at line 2342 of file mod_proxy.c.

◆ set_proxy_error_override()

static const char * set_proxy_error_override ( cmd_parms parms,
void *  dconf,
const char arg 
)
static

Definition at line 2366 of file mod_proxy.c.

◆ set_proxy_exclude()

static const char * set_proxy_exclude ( cmd_parms parms,
void *  dummy,
const char arg 
)
static

Definition at line 2249 of file mod_proxy.c.

◆ set_proxy_param()

static const char * set_proxy_param ( cmd_parms cmd,
void *  dummy,
const char arg 
)
static

< Forbidden in .htaccess files

Definition at line 2707 of file mod_proxy.c.

◆ set_proxy_req()

static const char * set_proxy_req ( cmd_parms parms,
void *  dummy,
int  flag 
)
static

Definition at line 2355 of file mod_proxy.c.

◆ set_proxy_timeout()

static const char * set_proxy_timeout ( cmd_parms parms,
void *  dummy,
const char arg 
)
static

Definition at line 2477 of file mod_proxy.c.

◆ set_recv_buffer_size()

static const char * set_recv_buffer_size ( cmd_parms parms,
void *  dummy,
const char arg 
)
static

Definition at line 2437 of file mod_proxy.c.

◆ set_source_address()

static const char * set_source_address ( cmd_parms parms,
void *  dummy,
const char arg 
)
static

Definition at line 1758 of file mod_proxy.c.

◆ set_status_opt()

static const char * set_status_opt ( cmd_parms parms,
void *  dummy,
const char arg 
)
static

Definition at line 2538 of file mod_proxy.c.

◆ set_via_opt()

static const char * set_via_opt ( cmd_parms parms,
void *  dummy,
const char arg 
)
static

Definition at line 2494 of file mod_proxy.c.

◆ set_worker_param()

static const char * set_worker_param ( apr_pool_t p,
server_rec s,
proxy_worker worker,
const char key,
const char val 
)
static

Definition at line 96 of file mod_proxy.c.

Variable Documentation

◆ [struct]

struct { ... } _hooks

◆ aplog_module_index

int* const aplog_module_index = &( proxy_module.module_index)
static

Definition at line 3381 of file mod_proxy.c.

◆ link_canon_handler

apr_array_header_t* link_canon_handler

Definition at line 3399 of file mod_proxy.c.

◆ link_check_trans

apr_array_header_t* link_check_trans

Definition at line 3399 of file mod_proxy.c.

◆ link_post_request

apr_array_header_t* link_post_request

Definition at line 3399 of file mod_proxy.c.

◆ link_pre_request

apr_array_header_t* link_pre_request

Definition at line 3399 of file mod_proxy.c.

◆ link_request_status

apr_array_header_t* link_request_status

Definition at line 3399 of file mod_proxy.c.

◆ link_scheme_handler

apr_array_header_t* link_scheme_handler

Definition at line 3399 of file mod_proxy.c.

◆ proxy_cmds

const command_rec proxy_cmds[]
static

Definition at line 2964 of file mod_proxy.c.

◆ proxy_id

const char* const proxy_id = "proxy"
static

Definition at line 77 of file mod_proxy.c.

◆ proxy_mutex

apr_global_mutex_t* proxy_mutex = NULL

Definition at line 78 of file mod_proxy.c.

◆ proxy_ssl_disable

apr_OFN_ssl_engine_disable_t* proxy_ssl_disable = NULL
static

Definition at line 3041 of file mod_proxy.c.

◆ proxy_ssl_enable

apr_OFN_ssl_proxy_enable_t* proxy_ssl_enable = NULL
static

Definition at line 3040 of file mod_proxy.c.

◆ proxy_ssl_engine

apr_OFN_ssl_engine_set_t* proxy_ssl_engine = NULL
static

Definition at line 3042 of file mod_proxy.c.

◆ set_worker_hc_param_f

apr_OFN_set_worker_hc_param_t* set_worker_hc_param_f = NULL
static

Definition at line 44 of file mod_proxy.c.