allow directories in try_files
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index d44933c..c22e717 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -1038,6 +1038,7 @@
ssize_t reserve, allocated;
u_char *p, *name;
ngx_str_t path;
+ ngx_uint_t test_dir;
ngx_http_try_file_t *tf;
ngx_open_file_info_t of;
ngx_http_script_code_pt code;
@@ -1133,6 +1134,8 @@
}
}
+ test_dir = tf->test_dir;
+
tf++;
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
@@ -1172,7 +1175,7 @@
continue;
}
- if (!of.is_file) {
+ if (of.is_dir && !test_dir) {
continue;
}
@@ -3853,6 +3856,11 @@
tf[i].name = value[i + 1];
+ if (tf[i].name.data[tf[i].name.len - 1] == '/') {
+ tf[i].test_dir = 1;
+ tf[i].name.len--;
+ }
+
n = ngx_http_script_variables_count(&tf[i].name);
if (n) {
diff --git a/src/http/ngx_http_core_module.h b/src/http/ngx_http_core_module.h
index 5be8561..46acb2b 100644
--- a/src/http/ngx_http_core_module.h
+++ b/src/http/ngx_http_core_module.h
@@ -245,6 +245,7 @@
ngx_array_t *lengths;
ngx_array_t *values;
ngx_str_t name;
+ ngx_uint_t test_dir; /* unsigned test_dir:1; */
} ngx_http_try_file_t;