nginx-0.1.8-RELEASE import
*) Bugfix: in the ngx_http_autoindex_module if the long file names were
in the listing.
*) Feature: the "^~" modifier in the location directive.
*) Feature: the proxy_max_temp_file_size directive.
diff --git a/src/http/modules/ngx_http_autoindex_handler.c b/src/http/modules/ngx_http_autoindex_handler.c
index c78d4e6..f5ec970 100644
--- a/src/http/modules/ngx_http_autoindex_handler.c
+++ b/src/http/modules/ngx_http_autoindex_handler.c
@@ -304,10 +304,9 @@
+ 1 /* 1 is for "/" */
+ entry[i].name.len + entry[i].escape
+ sizeof("\">") - 1
- + NGX_HTTP_AUTOINDEX_NAME_LEN
+ + NGX_HTTP_AUTOINDEX_NAME_LEN + sizeof(">") - 2
+ sizeof("</a>") - 1
- + 1
- + sizeof("28-Sep-1970 12:00 ") - 1
+ + sizeof(" 28-Sep-1970 12:00 ") - 1
+ sizeof("1023G") - 1
+ 2;
}
diff --git a/src/http/modules/ngx_http_range_filter.c b/src/http/modules/ngx_http_range_filter.c
index f96456c..8f98719 100644
--- a/src/http/modules/ngx_http_range_filter.c
+++ b/src/http/modules/ngx_http_range_filter.c
@@ -340,7 +340,7 @@
return NGX_ERROR;
}
- boundary = ngx_next_temp_number(0);
+ boundary = (uint32_t) ngx_next_temp_number(0);
/*
* The boundary header of the range:
diff --git a/src/http/modules/proxy/ngx_http_proxy_handler.c b/src/http/modules/proxy/ngx_http_proxy_handler.c
index 915d378..c0a8cf3 100644
--- a/src/http/modules/proxy/ngx_http_proxy_handler.c
+++ b/src/http/modules/proxy/ngx_http_proxy_handler.c
@@ -165,6 +165,13 @@
offsetof(ngx_http_proxy_loc_conf_t, temp_path),
(void *) ngx_garbage_collector_temp_handler },
+ { ngx_string("proxy_max_temp_file_size"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_size_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_proxy_loc_conf_t, max_temp_file_size),
+ NULL },
+
{ ngx_string("proxy_temp_file_write_size"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
ngx_conf_set_size_slot,
@@ -954,12 +961,7 @@
conf->read_timeout = NGX_CONF_UNSET_MSEC;
conf->busy_buffers_size = NGX_CONF_UNSET_SIZE;
- /*
- * "proxy_max_temp_file_size" is hardcoded to 1G for reverse proxy,
- * it should be configurable in the generic proxy
- */
- conf->max_temp_file_size = 1024 * 1024 * 1024;
-
+ conf->max_temp_file_size = NGX_CONF_UNSET_SIZE;
conf->temp_file_write_size = NGX_CONF_UNSET_SIZE;
/* "proxy_cyclic_temp_file" is disabled */
@@ -1059,11 +1061,25 @@
prev->max_temp_file_size, NGX_CONF_UNSET_SIZE);
if (conf->max_temp_file_size == NGX_CONF_UNSET_SIZE) {
- conf->max_temp_file_size = 2 * size;
- } else if (conf->max_temp_file_size < size) {
+ /*
+ * "proxy_max_temp_file_size" is set to 1G for reverse proxy,
+ * it should be much less in the generic proxy
+ */
+
+ conf->max_temp_file_size = 1024 * 1024 * 1024;
+
+#if 0
+ conf->max_temp_file_size = 2 * size;
+#endif
+
+
+ } else if (conf->max_temp_file_size != 0
+ && conf->max_temp_file_size < size)
+ {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
- "\"proxy_max_temp_file_size\" must be equal or bigger than "
+ "\"proxy_max_temp_file_size\" must be equal to zero to disable "
+ "the temporary files usage or must be equal or bigger than "
"maximum of the value of \"proxy_header_buffer_size\" and "
"one of the \"proxy_buffers\"");
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index 29a6f76..c764b2a 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -13,7 +13,8 @@
#define NGX_HTTP_LOCATION_EXACT 1
#define NGX_HTTP_LOCATION_AUTO_REDIRECT 2
-#define NGX_HTTP_LOCATION_REGEX 3
+#define NGX_HTTP_LOCATION_NOREGEX 3
+#define NGX_HTTP_LOCATION_REGEX 4
static void ngx_http_phase_event_handler(ngx_event_t *rev);
@@ -564,12 +565,13 @@
ngx_array_t *locations, size_t len)
{
ngx_int_t n, rc;
- ngx_uint_t i, found;
+ ngx_uint_t i, found, noregex;
ngx_http_core_loc_conf_t *clcf, **clcfp;
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "find location");
found = 0;
+ noregex = 0;
clcfp = locations->elts;
for (i = 0; i < locations->nelts; i++) {
@@ -619,6 +621,7 @@
}
r->loc_conf = clcfp[i]->loc_conf;
+ noregex = clcfp[i]->noregex;
found = 1;
}
}
@@ -637,6 +640,10 @@
#if (NGX_PCRE)
+ if (noregex) {
+ return NGX_HTTP_LOCATION_NOREGEX;
+ }
+
/* regex matches */
for (/* void */; i < locations->nelts; i++) {
@@ -1069,6 +1076,13 @@
clcf->name = value[2];
clcf->exact_match = 1;
+ } else if (value[1].len == 2
+ && value[1].data[0] == '^'
+ && value[1].data[1] == '~')
+ {
+ clcf->name = value[2];
+ clcf->noregex = 1;
+
} else if ((value[1].len == 1 && value[1].data[0] == '~')
|| (value[1].len == 2
&& value[1].data[0] == '~'
diff --git a/src/http/ngx_http_core_module.h b/src/http/ngx_http_core_module.h
index 9a17130..a70b472 100644
--- a/src/http/ngx_http_core_module.h
+++ b/src/http/ngx_http_core_module.h
@@ -142,6 +142,8 @@
#endif
unsigned exact_match:1;
+ unsigned noregex:1;
+
unsigned auto_redirect:1;
unsigned alias:1;