# diff -Nau freenginx-1.30.0/src/http/ngx_http_core_module.c freenginx-1.30.0_patched/src/http/ngx_http_core_module.c >ngx_http_core_module.c.patch --- freenginx-1.30.0/src/http/ngx_http_core_module.c 2026-04-14 05:23:27.000000000 -0300 +++ freenginx-1.30.0_patched/src/http/ngx_http_core_module.c 2026-04-28 19:56:18.478687257 -0300 @@ -628,7 +628,14 @@ offsetof(ngx_http_core_loc_conf_t, msie_refresh), NULL }, - { ngx_string("log_not_found"), + { ngx_string("log_forbidden"), + NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, + ngx_conf_set_flag_slot, + NGX_HTTP_LOC_CONF_OFFSET, + offsetof(ngx_http_core_loc_conf_t, log_forbidden), + NULL }, + + { ngx_string("log_not_found"), NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, ngx_conf_set_flag_slot, NGX_HTTP_LOC_CONF_OFFSET, @@ -1177,7 +1184,8 @@ ngx_http_core_post_access_phase(ngx_http_request_t *r, ngx_http_phase_handler_t *ph) { - ngx_int_t access_code; + ngx_int_t access_code; + ngx_http_core_loc_conf_t *clcf; ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "post access phase: %ui", r->phase_handler); @@ -1187,7 +1195,9 @@ if (access_code) { r->access_code = 0; - if (access_code == NGX_HTTP_FORBIDDEN) { + clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); + + if ((clcf->log_forbidden) && (access_code == NGX_HTTP_FORBIDDEN)) { ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "access forbidden by rule"); } @@ -1273,9 +1283,10 @@ ngx_http_core_content_phase(ngx_http_request_t *r, ngx_http_phase_handler_t *ph) { - size_t root; - ngx_int_t rc; - ngx_str_t path; + size_t root; + ngx_int_t rc; + ngx_str_t path; + ngx_http_core_loc_conf_t *clcf; if (r->content_handler) { r->write_event_handler = ngx_http_request_empty_handler; @@ -1306,7 +1317,11 @@ if (r->uri.data[r->uri.len - 1] == '/') { - if (ngx_http_map_uri_to_path(r, &path, &root, 0) != NULL) { + clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); + + if ((clcf->log_forbidden) + && (ngx_http_map_uri_to_path(r, &path, &root, 0) != NULL)) { + ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "directory index of \"%s\" is forbidden", path.data); } @@ -3649,6 +3664,7 @@ clcf->port_in_redirect = NGX_CONF_UNSET; clcf->msie_padding = NGX_CONF_UNSET; clcf->msie_refresh = NGX_CONF_UNSET; + clcf->log_forbidden = NGX_CONF_UNSET; clcf->log_not_found = NGX_CONF_UNSET; clcf->log_subrequest = NGX_CONF_UNSET; clcf->recursive_error_pages = NGX_CONF_UNSET; @@ -3923,6 +3939,7 @@ ngx_conf_merge_value(conf->port_in_redirect, prev->port_in_redirect, 1); ngx_conf_merge_value(conf->msie_padding, prev->msie_padding, 1); ngx_conf_merge_value(conf->msie_refresh, prev->msie_refresh, 0); + ngx_conf_merge_value(conf->log_forbidden, prev->log_forbidden, 1); ngx_conf_merge_value(conf->log_not_found, prev->log_not_found, 1); ngx_conf_merge_value(conf->log_subrequest, prev->log_subrequest, 0); ngx_conf_merge_value(conf->recursive_error_pages,