91 lines
2.8 KiB
Diff
91 lines
2.8 KiB
Diff
--- nginx-1.5.12/src/http/ngx_http_core_module.c 2010-12-14 18:38:42.000000000 +0800
|
|
+++ nginx-1.5.12-patched/src/http/ngx_http_core_module.c 2011-01-30 19:24:34.956354518 +0800
|
|
@@ -57,6 +57,8 @@
|
|
void *conf);
|
|
static char *ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd,
|
|
void *conf);
|
|
+static char *ngx_http_core_no_error_pages(ngx_conf_t *cf, ngx_command_t *cmd,
|
|
+ void *conf);
|
|
static char *ngx_http_core_try_files(ngx_conf_t *cf, ngx_command_t *cmd,
|
|
void *conf);
|
|
static char *ngx_http_core_open_file_cache(ngx_conf_t *cf, ngx_command_t *cmd,
|
|
@@ -614,6 +616,14 @@
|
|
0,
|
|
NULL },
|
|
|
|
+ { ngx_string("no_error_pages"),
|
|
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|
|
+ |NGX_CONF_NOARGS,
|
|
+ ngx_http_core_no_error_pages,
|
|
+ NGX_HTTP_LOC_CONF_OFFSET,
|
|
+ 0,
|
|
+ NULL },
|
|
+
|
|
{ ngx_string("try_files"),
|
|
NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_2MORE,
|
|
ngx_http_core_try_files,
|
|
@@ -3052,7 +3062,6 @@
|
|
* clcf->types = NULL;
|
|
* clcf->default_type = { 0, NULL };
|
|
* clcf->error_log = NULL;
|
|
- * clcf->error_pages = NULL;
|
|
* clcf->try_files = NULL;
|
|
* clcf->client_body_path = NULL;
|
|
* clcf->regex = NULL;
|
|
@@ -3062,6 +3071,7 @@
|
|
* clcf->gzip_proxied = 0;
|
|
*/
|
|
|
|
+ clcf->error_pages = NGX_CONF_UNSET_PTR;
|
|
clcf->client_max_body_size = NGX_CONF_UNSET;
|
|
clcf->client_body_buffer_size = NGX_CONF_UNSET_SIZE;
|
|
clcf->client_body_timeout = NGX_CONF_UNSET_MSEC;
|
|
@@ -3250,9 +3260,7 @@
|
|
}
|
|
}
|
|
|
|
- if (conf->error_pages == NULL && prev->error_pages) {
|
|
- conf->error_pages = prev->error_pages;
|
|
- }
|
|
+ ngx_conf_merge_ptr_value(conf->error_pages, prev->error_pages, NULL);
|
|
|
|
ngx_conf_merge_str_value(conf->default_type,
|
|
prev->default_type, "text/plain");
|
|
@@ -3988,6 +3996,10 @@
|
|
ngx_http_compile_complex_value_t ccv;
|
|
|
|
if (clcf->error_pages == NULL) {
|
|
+ return "conflicts with \"no_error_pages\"";
|
|
+ }
|
|
+
|
|
+ if (clcf->error_pages == NGX_CONF_UNSET_PTR) {
|
|
clcf->error_pages = ngx_array_create(cf->pool, 4,
|
|
sizeof(ngx_http_err_page_t));
|
|
if (clcf->error_pages == NULL) {
|
|
@@ -4095,6 +4107,25 @@
|
|
|
|
|
|
static char *
|
|
+ngx_http_core_no_error_pages(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|
+{
|
|
+ ngx_http_core_loc_conf_t *clcf = conf;
|
|
+
|
|
+ if (clcf->error_pages == NULL) {
|
|
+ return "is duplicate";
|
|
+ }
|
|
+
|
|
+ if (clcf->error_pages != NGX_CONF_UNSET_PTR) {
|
|
+ return "conflicts with \"error_page\"";
|
|
+ }
|
|
+
|
|
+ clcf->error_pages = NULL;
|
|
+
|
|
+ return NGX_CONF_OK;
|
|
+}
|
|
+
|
|
+
|
|
+static char *
|
|
ngx_http_core_try_files(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|
{
|
|
ngx_http_core_loc_conf_t *clcf = conf;
|