# HG changeset patch # User Igor Sysoev # Date 1185732345 0 # Node ID e958b3cab51a4dc379875556d26cd78a3c89c3e6 # Parent 9ca095d36863bb6925c0ea4c8962454608aa23ae --sysconfdir=DIR diff --git a/auto/configure b/auto/configure --- a/auto/configure +++ b/auto/configure @@ -67,6 +67,7 @@ fi have=NGX_PREFIX value="\"$NGX_PREFIX/\"" . auto/define have=NGX_SBIN_PATH value="\"$NGX_SBIN_PATH\"" . auto/define +have=NGX_CONF_PREFIX value="\"$NGX_CONF_PREFIX/\"" . auto/define have=NGX_CONF_PATH value="\"$NGX_CONF_PATH\"" . auto/define have=NGX_PID_PATH value="\"$NGX_PID_PATH\"" . auto/define have=NGX_LOCK_PATH value="\"$NGX_LOCK_PATH\"" . auto/define diff --git a/auto/install b/auto/install --- a/auto/install +++ b/auto/install @@ -26,19 +26,22 @@ install: $NGX_OBJS${ngx_dirsep}nginx${ng test ! -f '$NGX_SBIN_PATH' || mv '$NGX_SBIN_PATH' '$NGX_SBIN_PATH.old' cp $NGX_OBJS/nginx '$NGX_SBIN_PATH' - test -d '`dirname "$NGX_CONF_PATH"`' \ - || mkdir -p '`dirname "$NGX_CONF_PATH"`' + test -d '$NGX_CONF_PREFIX' || mkdir -p '$NGX_CONF_PREFIX' - cp conf/koi-win '`dirname "$NGX_CONF_PATH"`' - cp conf/koi-utf '`dirname "$NGX_CONF_PATH"`' - cp conf/win-utf '`dirname "$NGX_CONF_PATH"`' + cp conf/koi-win '$NGX_CONF_PREFIX' + cp conf/koi-utf '$NGX_CONF_PREFIX' + cp conf/win-utf '$NGX_CONF_PREFIX' - test -f '`dirname "$NGX_CONF_PATH"`/mime.types' || \ - cp conf/mime.types '`dirname "$NGX_CONF_PATH"`/mime.types' - cp conf/mime.types '`dirname "$NGX_CONF_PATH"`/mime.types.default' + test -f '$NGX_CONF_PREFIX/mime.types' \ + || cp conf/mime.types '$NGX_CONF_PREFIX' + cp conf/mime.types '$NGX_CONF_PATH/mime.types.default' - test -f '$NGX_CONF_PATH' || cp conf/nginx.conf '$NGX_CONF_PATH' - cp conf/nginx.conf '`dirname "$NGX_CONF_PATH"`/nginx.conf.default' + test -f '$NGX_CONF_PREFIX/fastcgi_params' \ + || cp conf/fastcgi_params '$NGX_CONF_PREFIX' + cp conf/fastcgi_params '$NGX_CONF_PATH/fastcgi_params.default' + + test -f '$NGX_CONF_PATH' || cp conf/nginx.conf '$NGX_CONF_PREFIX' + cp conf/nginx.conf '$NGX_CONF_PREFIX/nginx.conf.default' test -d '`dirname "$NGX_PID_PATH"`' \ || mkdir -p '`dirname "$NGX_PID_PATH"`' diff --git a/auto/options b/auto/options --- a/auto/options +++ b/auto/options @@ -6,6 +6,7 @@ help=no NGX_PREFIX= NGX_SBIN_PATH= +NGX_CONF_PREFIX= NGX_CONF_PATH= NGX_ERROR_LOG_PATH= NGX_PID_PATH= @@ -123,6 +124,7 @@ do --prefix=*) NGX_PREFIX="$value" ;; --sbin-path=*) NGX_SBIN_PATH="$value" ;; + --sysconfdir=*) NGX_CONF_PREFIX="$value" ;; --conf-path=*) NGX_CONF_PATH="$value" ;; --error-log-path=*) NGX_ERROR_LOG_PATH="$value";; --pid-path=*) NGX_PID_PATH="$value" ;; @@ -240,6 +242,7 @@ cat << END --prefix=PATH set the installation prefix --sbin-path=PATH set path to the nginx binary file + --sysconfdir=PATH set the configuration prefix --conf-path=PATH set path to the nginx.conf file --error-log-path=PATH set path to the error log --pid-path=PATH set path to nginx.pid file @@ -360,6 +363,7 @@ fi NGX_PREFIX=${NGX_PREFIX:-/usr/local/nginx} +NGX_CONF_PREFIX=${NGX_CONF_PREFIX:-$NGX_PREFIX} case ".$NGX_SBIN_PATH" in @@ -381,11 +385,11 @@ case ".$NGX_CONF_PATH" in ;; .) - NGX_CONF_PATH=$NGX_PREFIX/conf/nginx.conf + NGX_CONF_PATH=$NGX_CONF_PREFIX/conf/nginx.conf ;; *) - NGX_CONF_PATH=$NGX_PREFIX/$NGX_CONF_PATH + NGX_CONF_PATH=$NGX_CONF_PREFIX/$NGX_CONF_PATH ;; esac diff --git a/auto/summary b/auto/summary --- a/auto/summary +++ b/auto/summary @@ -148,6 +148,7 @@ fi cat << END nginx path prefix: "$NGX_PREFIX" nginx binary file: "$NGX_SBIN_PATH" + nginx configuration prefix: "$NGX_CONF_PREFIX" nginx configuration file: "$NGX_CONF_PATH" nginx pid file: "$NGX_PID_PATH" END diff --git a/src/core/nginx.c b/src/core/nginx.c --- a/src/core/nginx.c +++ b/src/core/nginx.c @@ -656,7 +656,7 @@ ngx_getopt(ngx_cycle_t *cycle, int argc, cycle->conf_file.data = (u_char *) NGX_CONF_PATH; } - if (ngx_conf_full_name(cycle, &cycle->conf_file) == NGX_ERROR) { + if (ngx_conf_full_name(cycle, &cycle->conf_file, 1) == NGX_ERROR) { return NGX_ERROR; } @@ -826,7 +826,7 @@ ngx_core_module_init_conf(ngx_cycle_t *c ccf->pid.data = (u_char *) NGX_PID_PATH; } - if (ngx_conf_full_name(cycle, &ccf->pid) == NGX_ERROR) { + if (ngx_conf_full_name(cycle, &ccf->pid, 0) == NGX_ERROR) { return NGX_CONF_ERROR; } @@ -846,7 +846,7 @@ ngx_core_module_init_conf(ngx_cycle_t *c ccf->lock_file.data = (u_char *) NGX_LOCK_PATH; } - if (ngx_conf_full_name(cycle, &ccf->lock_file) == NGX_ERROR) { + if (ngx_conf_full_name(cycle, &ccf->lock_file, 0) == NGX_ERROR) { return NGX_CONF_ERROR; } diff --git a/src/core/ngx_conf_file.c b/src/core/ngx_conf_file.c --- a/src/core/ngx_conf_file.c +++ b/src/core/ngx_conf_file.c @@ -641,7 +641,7 @@ ngx_conf_include(ngx_conf_t *cf, ngx_com ngx_log_debug1(NGX_LOG_DEBUG_CORE, cf->log, 0, "include %s", file.data); - if (ngx_conf_full_name(cf->cycle, &file) == NGX_ERROR) { + if (ngx_conf_full_name(cf->cycle, &file, 1) == NGX_ERROR) { return NGX_CONF_ERROR; } @@ -681,9 +681,10 @@ ngx_conf_include(ngx_conf_t *cf, ngx_com ngx_int_t -ngx_conf_full_name(ngx_cycle_t *cycle, ngx_str_t *name) +ngx_conf_full_name(ngx_cycle_t *cycle, ngx_str_t *name, ngx_uint_t conf_prefix) { - u_char *p; + size_t len; + u_char *p, *prefix; ngx_str_t old; if (name->data[0] == '/') { @@ -704,14 +705,22 @@ ngx_conf_full_name(ngx_cycle_t *cycle, n old = *name; - name->len = cycle->root.len + old.len; + if (conf_prefix) { + len = sizeof(NGX_CONF_PREFIX) - 1; + prefix = (u_char *) NGX_CONF_PREFIX; + } else { + len = cycle->root.len; + prefix = cycle->root.data; + } + + name->len = len + old.len; name->data = ngx_palloc(cycle->pool, name->len + 1); if (name->data == NULL) { return NGX_ERROR; } - p = ngx_cpymem(name->data, cycle->root.data, cycle->root.len), + p = ngx_cpymem(name->data, prefix, len); ngx_cpystrn(p, old.data, old.len + 1); return NGX_OK; @@ -734,7 +743,7 @@ ngx_conf_open_file(ngx_cycle_t *cycle, n if (name) { full = *name; - if (ngx_conf_full_name(cycle, &full) == NGX_ERROR) { + if (ngx_conf_full_name(cycle, &full, 0) == NGX_ERROR) { return NULL; } diff --git a/src/core/ngx_conf_file.h b/src/core/ngx_conf_file.h --- a/src/core/ngx_conf_file.h +++ b/src/core/ngx_conf_file.h @@ -320,7 +320,8 @@ char *ngx_conf_check_num_bounds(ngx_conf char *ngx_conf_parse(ngx_conf_t *cf, ngx_str_t *filename); -ngx_int_t ngx_conf_full_name(ngx_cycle_t *cycle, ngx_str_t *name); +ngx_int_t ngx_conf_full_name(ngx_cycle_t *cycle, ngx_str_t *name, + ngx_uint_t conf_prefix); ngx_open_file_t *ngx_conf_open_file(ngx_cycle_t *cycle, ngx_str_t *name); void ngx_cdecl ngx_conf_log_error(ngx_uint_t level, ngx_conf_t *cf, ngx_err_t err, char *fmt, ...); diff --git a/src/core/ngx_file.c b/src/core/ngx_file.c --- a/src/core/ngx_file.c +++ b/src/core/ngx_file.c @@ -260,7 +260,7 @@ ngx_conf_set_path_slot(ngx_conf_t *cf, n path->name.len--; } - if (ngx_conf_full_name(cf->cycle, &path->name) == NGX_ERROR) { + if (ngx_conf_full_name(cf->cycle, &path->name, 0) == NGX_ERROR) { return NULL; } diff --git a/src/core/ngx_file.h b/src/core/ngx_file.h --- a/src/core/ngx_file.h +++ b/src/core/ngx_file.h @@ -109,7 +109,7 @@ char *ngx_conf_set_access_slot(ngx_conf_ curr->name.len = sizeof(path) - 1; \ curr->name.data = (u_char *) path; \ \ - if (ngx_conf_full_name(cf->cycle, &curr->name) == NGX_ERROR) { \ + if (ngx_conf_full_name(cf->cycle, &curr->name, 0) == NGX_ERROR) { \ return NGX_CONF_ERROR; \ } \ \ diff --git a/src/core/ngx_log.c b/src/core/ngx_log.c --- a/src/core/ngx_log.c +++ b/src/core/ngx_log.c @@ -333,7 +333,7 @@ ngx_set_error_log(ngx_conf_t *cf, ngx_co } else { cf->cycle->new_log->file->name = value[1]; - if (ngx_conf_full_name(cf->cycle, &cf->cycle->new_log->file->name) + if (ngx_conf_full_name(cf->cycle, &cf->cycle->new_log->file->name, 0) == NGX_ERROR) { return NGX_CONF_ERROR; diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c --- a/src/event/ngx_event_openssl.c +++ b/src/event/ngx_event_openssl.c @@ -198,7 +198,7 @@ ngx_int_t ngx_ssl_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *cert, ngx_str_t *key) { - if (ngx_conf_full_name(cf->cycle, cert) == NGX_ERROR) { + if (ngx_conf_full_name(cf->cycle, cert, 1) == NGX_ERROR) { return NGX_ERROR; } @@ -211,7 +211,7 @@ ngx_ssl_certificate(ngx_conf_t *cf, ngx_ return NGX_ERROR; } - if (ngx_conf_full_name(cf->cycle, key) == NGX_ERROR) { + if (ngx_conf_full_name(cf->cycle, key, 1) == NGX_ERROR) { return NGX_ERROR; } @@ -242,7 +242,7 @@ ngx_ssl_client_certificate(ngx_conf_t *c return NGX_OK; } - if (ngx_conf_full_name(cf->cycle, cert) == NGX_ERROR) { + if (ngx_conf_full_name(cf->cycle, cert, 1) == NGX_ERROR) { return NGX_ERROR; } diff --git a/src/http/modules/ngx_http_auth_basic_module.c b/src/http/modules/ngx_http_auth_basic_module.c --- a/src/http/modules/ngx_http_auth_basic_module.c +++ b/src/http/modules/ngx_http_auth_basic_module.c @@ -352,7 +352,7 @@ ngx_http_auth_basic_merge_loc_conf(ngx_c } if (conf->user_file.data) { - if (ngx_conf_full_name(cf->cycle, &conf->user_file) != NGX_OK) { + if (ngx_conf_full_name(cf->cycle, &conf->user_file, 1) != NGX_OK) { return NGX_CONF_ERROR; } diff --git a/src/http/modules/ngx_http_geo_module.c b/src/http/modules/ngx_http_geo_module.c --- a/src/http/modules/ngx_http_geo_module.c +++ b/src/http/modules/ngx_http_geo_module.c @@ -198,7 +198,7 @@ ngx_http_geo(ngx_conf_t *cf, ngx_command if (ngx_strcmp(value[0].data, "include") == 0) { file = value[1]; - if (ngx_conf_full_name(cf->cycle, &file) == NGX_ERROR){ + if (ngx_conf_full_name(cf->cycle, &file, 1) == NGX_ERROR){ return NGX_CONF_ERROR; } diff --git a/src/http/modules/ngx_http_map_module.c b/src/http/modules/ngx_http_map_module.c --- a/src/http/modules/ngx_http_map_module.c +++ b/src/http/modules/ngx_http_map_module.c @@ -378,7 +378,7 @@ ngx_http_map(ngx_conf_t *cf, ngx_command if (ngx_strcmp(value[0].data, "include") == 0) { file = value[1]; - if (ngx_conf_full_name(cf->cycle, &file) == NGX_ERROR){ + if (ngx_conf_full_name(cf->cycle, &file, 1) == NGX_ERROR){ return NGX_CONF_ERROR; } diff --git a/src/http/modules/perl/ngx_http_perl_module.c b/src/http/modules/perl/ngx_http_perl_module.c --- a/src/http/modules/perl/ngx_http_perl_module.c +++ b/src/http/modules/perl/ngx_http_perl_module.c @@ -454,7 +454,7 @@ ngx_http_perl_init_interpreter(ngx_conf_ #endif if (pmcf->modules.data) { - if (ngx_conf_full_name(cf->cycle, &pmcf->modules) != NGX_OK) { + if (ngx_conf_full_name(cf->cycle, &pmcf->modules, 0) != NGX_OK) { return NGX_CONF_ERROR; } } diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c --- a/src/http/ngx_http_core_module.c +++ b/src/http/ngx_http_core_module.c @@ -1223,7 +1223,8 @@ ngx_http_map_uri_to_path(ngx_http_reques return NULL; } - if (ngx_conf_full_name((ngx_cycle_t *) ngx_cycle, path) == NGX_ERROR) { + if (ngx_conf_full_name((ngx_cycle_t *) ngx_cycle, path, 0)== NGX_ERROR) + { return NULL; } @@ -1947,7 +1948,7 @@ ngx_http_core_type(ngx_conf_t *cf, ngx_c if (ngx_strcmp(value[0].data, "include") == 0) { file = value[1]; - if (ngx_conf_full_name(cf->cycle, &file) == NGX_ERROR){ + if (ngx_conf_full_name(cf->cycle, &file, 1) == NGX_ERROR){ return NGX_CONF_ERROR; } @@ -2290,7 +2291,7 @@ ngx_http_core_merge_loc_conf(ngx_conf_t conf->root.len = sizeof("html") - 1; conf->root.data = (u_char *) "html"; - if (ngx_conf_full_name(cf->cycle, &conf->root) == NGX_ERROR) { + if (ngx_conf_full_name(cf->cycle, &conf->root, 0) == NGX_ERROR) { return NGX_CONF_ERROR; } } @@ -2739,7 +2740,7 @@ ngx_http_core_root(ngx_conf_t *cf, ngx_c } if (lcf->root.data[0] != '$') { - if (ngx_conf_full_name(cf->cycle, &lcf->root) == NGX_ERROR) { + if (ngx_conf_full_name(cf->cycle, &lcf->root, 0) == NGX_ERROR) { return NGX_CONF_ERROR; } } diff --git a/src/http/ngx_http_variables.c b/src/http/ngx_http_variables.c --- a/src/http/ngx_http_variables.c +++ b/src/http/ngx_http_variables.c @@ -926,7 +926,9 @@ ngx_http_variable_document_root(ngx_http return NGX_ERROR; } - if (ngx_conf_full_name((ngx_cycle_t *) ngx_cycle, &path) == NGX_ERROR) { + if (ngx_conf_full_name((ngx_cycle_t *) ngx_cycle, &path, 0) + == NGX_ERROR) + { return NGX_ERROR; }