From be552c618ba908a3a63fb51cf4c45f96512a2959 Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Tue, 22 Nov 2016 09:53:10 +0000 Subject: [PATCH 001/224] comment on proposal git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1770818 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 1 + 1 file changed, 1 insertion(+) diff --git a/STATUS b/STATUS index eb27c39a10..703f1970e0 100644 --- a/STATUS +++ b/STATUS @@ -223,6 +223,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: see svn diff -r1767912:HEAD http://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x-merge-http-strict/ +1: wrowe + icing: might need r1770817 as well (var unused warning) *) ap_reclaim_child_processes(): Implement terminate immediately trunk patches: -- GitLab From 39d502662f09de420bf2c93c16e4ca085e817e08 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Tue, 22 Nov 2016 12:24:37 +0000 Subject: [PATCH 002/224] votes git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1770829 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/STATUS b/STATUS index 703f1970e0..ed3473c9fe 100644 --- a/STATUS +++ b/STATUS @@ -213,6 +213,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: *) mod_socache_memcache: Provide memcache STATs to mod_status trunk patch: http://svn.apache.org/r1768245 + trunk patch: http://svn.apache.org/r1770828 2.4.x patch: trunk works +1: jim @@ -230,7 +231,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: https://svn.apache.org/r1757061 https://svn.apache.org/r1770750 2.4.x patch: https://people.apache.org/~sf/PR53555_1_ap_reclaim_child_processes.diff - +1: sf + +1: sf, jim *) Improve mod_status view of async connections trunk patches: @@ -239,7 +240,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: https://svn.apache.org/r1756848 https://svn.apache.org/r1757029 2.4.x patch: https://people.apache.org/~sf/PR53555_2_mod_status.diff - +1: sf + +1: sf, jim *) mpm_event: Free resources earlier during shutdown trunk patches: @@ -249,7 +250,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: https://svn.apache.org/r1738466 https://svn.apache.org/r1738486 2.4.x patch: https://people.apache.org/~sf/PR53555_3_free_early.diff - +1: sf + +1: sf, jim *) mpm_event: Use all free scoreboard slots up to ServerLimit, but don't re-use scoreboard slots of still running, gracefully finishing processes. @@ -264,7 +265,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: https://svn.apache.org/r1770768 2.4.x patch: https://people.apache.org/~sf/PR53555_4_use_all_slots.diff docs: https://svn.apache.org/r1770771 (in addition to the above) - +1: sf + +1: sf, jim PATCHES/ISSUES THAT ARE BEING WORKED -- GitLab From d9ee54f54813e8b0dbfd02766b147c163458cdda Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Tue, 22 Nov 2016 12:40:47 +0000 Subject: [PATCH 003/224] Hmmm.... Was folded into Revision 1769595 ?? git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1770830 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 4 ---- 1 file changed, 4 deletions(-) diff --git a/STATUS b/STATUS index ed3473c9fe..60c16e9f55 100644 --- a/STATUS +++ b/STATUS @@ -117,10 +117,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) Remove unnecessary apr_table_do() function casts. - trunk patch: http://svn.apache.org/r1769192 - 2.4.x patch: trunk works - +1: jchampion, rpluem, sf PATCHES PROPOSED TO BACKPORT FROM TRUNK: -- GitLab From 54f057f921b150f172402013ec4c9f502a148f1c Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Tue, 22 Nov 2016 13:40:39 +0000 Subject: [PATCH 004/224] tests OK git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1770836 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STATUS b/STATUS index 60c16e9f55..1610bd2feb 100644 --- a/STATUS +++ b/STATUS @@ -156,7 +156,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: in the client certificate chain. PR 55786. trunk patch: http://svn.apache.org/r1756542 2.4.x patch: trunk works (modulo CHANGES) - +1: ylavic, icing (by inspectin) + +1: ylavic, icing (by inspectin), jim *) mod_proxy, mod_ssl: Handle SSLProxy* directives in sections, allowing per backend TLS configuration. -- GitLab From 5b058ee78c2e87ddf7b45407270d563c74394eab Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Tue, 22 Nov 2016 13:40:56 +0000 Subject: [PATCH 005/224] promote git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1770837 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/STATUS b/STATUS index 1610bd2feb..b82e9f83a9 100644 --- a/STATUS +++ b/STATUS @@ -117,6 +117,11 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] + *) mod_ssl: Fix quick renegotiation (OptRenegotiaton) with no intermediate + in the client certificate chain. PR 55786. + trunk patch: http://svn.apache.org/r1756542 + 2.4.x patch: trunk works (modulo CHANGES) + +1: ylavic, icing (by inspectin), jim PATCHES PROPOSED TO BACKPORT FROM TRUNK: @@ -152,12 +157,6 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: headers (GMT now, GMT now Europe/Paris, GMT tomorrow, GMT yesterday, PST now). +1: elukey - *) mod_ssl: Fix quick renegotiation (OptRenegotiaton) with no intermediate - in the client certificate chain. PR 55786. - trunk patch: http://svn.apache.org/r1756542 - 2.4.x patch: trunk works (modulo CHANGES) - +1: ylavic, icing (by inspectin), jim - *) mod_proxy, mod_ssl: Handle SSLProxy* directives in sections, allowing per backend TLS configuration. trunk patch: http://svn.apache.org/r1740928 -- GitLab From ad95a17f1e274971a69b306da18b339c7b30dced Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Tue, 22 Nov 2016 13:42:51 +0000 Subject: [PATCH 006/224] Merge r1756542 from trunk: mod_ssl: Fix quick renegotiation (OptRenegotiaton) with no intermediate in the client certificate chain. PR 55786. This is done by handling an empty cert chain as no/NULL chain. Submitted by: ylavic Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1770838 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ STATUS | 5 ----- modules/ssl/ssl_engine_kernel.c | 16 ++++++++-------- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/CHANGES b/CHANGES index 4faf997abc..2861e58575 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ Changes with Apache 2.4.24 + *) mod_ssl: Fix quick renegotiation (OptRenegotiaton) with no intermediate + in the client certificate chain. PR 55786. [Yann Ylavic] + *) mod_dir: Responses that go through "FallbackResource" might appear to hang due to unterminated chunked encoding. PR58292. [Eric Covener] diff --git a/STATUS b/STATUS index b82e9f83a9..31b59ce351 100644 --- a/STATUS +++ b/STATUS @@ -117,11 +117,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) mod_ssl: Fix quick renegotiation (OptRenegotiaton) with no intermediate - in the client certificate chain. PR 55786. - trunk patch: http://svn.apache.org/r1756542 - 2.4.x patch: trunk works (modulo CHANGES) - +1: ylavic, icing (by inspectin), jim PATCHES PROPOSED TO BACKPORT FROM TRUNK: diff --git a/modules/ssl/ssl_engine_kernel.c b/modules/ssl/ssl_engine_kernel.c index 97c794d6f2..d4459a2f26 100644 --- a/modules/ssl/ssl_engine_kernel.c +++ b/modules/ssl/ssl_engine_kernel.c @@ -884,7 +884,14 @@ int ssl_hook_Access(request_rec *r) cert = SSL_get_peer_certificate(ssl); - if (!cert_stack && cert) { + if (!cert_stack || (sk_X509_num(cert_stack) == 0)) { + if (!cert) { + ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(02222) + "Cannot find peer certificate chain"); + + return HTTP_FORBIDDEN; + } + /* client cert is in the session cache, but there is * no chain, since ssl3_get_client_certificate() * sk_X509_shift-ed the peer cert out of the chain. @@ -894,13 +901,6 @@ int ssl_hook_Access(request_rec *r) sk_X509_push(cert_stack, cert); } - if (!cert_stack || (sk_X509_num(cert_stack) == 0)) { - ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(02222) - "Cannot find peer certificate chain"); - - return HTTP_FORBIDDEN; - } - if (!(cert_store || (cert_store = SSL_CTX_get_cert_store(ctx)))) { -- GitLab From bbb83ca68eef84482e9e784bc6a6f3d386b49534 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Tue, 22 Nov 2016 13:45:32 +0000 Subject: [PATCH 007/224] these look like works in progress (??) git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1770839 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 61 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/STATUS b/STATUS index 31b59ce351..83e3f2b8a7 100644 --- a/STATUS +++ b/STATUS @@ -122,36 +122,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK: PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] - *) mod_ssl: Return 502 instead of 500 when SSL peer check or - proxy_post_handshake hook fails. - Trunk patch: r1645529 (works) - 2.4.x patch which adds CHANGES: https://emptyhammock.com/media/downloads/r1645529-to-2.4.x.txt - +1: trawick - ylavic: there may be missing bits, see thread for commit r1736510. - - *) core: Drop an invalid Last-Modified header value coming - from a (F)CGI script instead of replacing it with Unix epoch. - Warn the users about Last-Modified header value replacements - and violations of the RFC. - trunk patch: http://svn.apache.org/r1748379 - http://svn.apache.org/r1750747 - http://svn.apache.org/r1750749 - http://svn.apache.org/r1750953 - http://svn.apache.org/r1751138 - http://svn.apache.org/r1751139 - http://svn.apache.org/r1751147 - http://svn.apache.org/r1757818 - 2.4.x: trunk patches work, final view: - http://home.apache.org/~elukey/httpd-2.4.x-core-last_modified_tz_logging.patch - The problem has been discussed in dev@ extensively but we did not reach a common - agreement about how to proceed in the long term. While we wait, I would really like - to introduce useful logs for the users (the starting point of this change was a users@ - email thread). If this is not the right way to go I will move the patch to other - sections of STATUS (stalled or being worked). - The code has been tested with a simple PHP script returning different Last-Modified - headers (GMT now, GMT now Europe/Paris, GMT tomorrow, GMT yesterday, PST now). - +1: elukey - *) mod_proxy, mod_ssl: Handle SSLProxy* directives in sections, allowing per backend TLS configuration. trunk patch: http://svn.apache.org/r1740928 @@ -259,6 +229,37 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: PATCHES/ISSUES THAT ARE BEING WORKED + [ New entried should be added at the START of the list ] + + *) mod_ssl: Return 502 instead of 500 when SSL peer check or + proxy_post_handshake hook fails. + Trunk patch: r1645529 (works) + 2.4.x patch which adds CHANGES: https://emptyhammock.com/media/downloads/r1645529-to-2.4.x.txt + +1: trawick + ylavic: there may be missing bits, see thread for commit r1736510. + + *) core: Drop an invalid Last-Modified header value coming + from a (F)CGI script instead of replacing it with Unix epoch. + Warn the users about Last-Modified header value replacements + and violations of the RFC. + trunk patch: http://svn.apache.org/r1748379 + http://svn.apache.org/r1750747 + http://svn.apache.org/r1750749 + http://svn.apache.org/r1750953 + http://svn.apache.org/r1751138 + http://svn.apache.org/r1751139 + http://svn.apache.org/r1751147 + http://svn.apache.org/r1757818 + 2.4.x: trunk patches work, final view: + http://home.apache.org/~elukey/httpd-2.4.x-core-last_modified_tz_logging.patch + The problem has been discussed in dev@ extensively but we did not reach a common + agreement about how to proceed in the long term. While we wait, I would really like + to introduce useful logs for the users (the starting point of this change was a users@ + email thread). If this is not the right way to go I will move the patch to other + sections of STATUS (stalled or being worked). + The code has been tested with a simple PHP script returning different Last-Modified + headers (GMT now, GMT now Europe/Paris, GMT tomorrow, GMT yesterday, PST now). + +1: elukey *) http: Don't remove the Content-Length of zero from a HEAD response if it comes from an origin server, module or script. Allow the previous -- GitLab From ed65f837558cf8bf4e996b761b8a0289efd98f89 Mon Sep 17 00:00:00 2001 From: Eric Covener Date: Tue, 22 Nov 2016 14:33:15 +0000 Subject: [PATCH 008/224] thanks, now in the branch git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1770847 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 1 - 1 file changed, 1 deletion(-) diff --git a/STATUS b/STATUS index 83e3f2b8a7..08030e72f8 100644 --- a/STATUS +++ b/STATUS @@ -184,7 +184,6 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: see svn diff -r1767912:HEAD http://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x-merge-http-strict/ +1: wrowe - icing: might need r1770817 as well (var unused warning) *) ap_reclaim_child_processes(): Implement terminate immediately trunk patches: -- GitLab From 8a5985883da7944b2fb0f93d1873c580623b6c96 Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Wed, 23 Nov 2016 16:32:59 +0000 Subject: [PATCH 009/224] Merge of r1769596,1769600,1770395,1770998 from trunk mod_http2: PUSH triggers only on GET mod_proxy_http2: 1xx responses not forwarded unconditionally on HTTP/1.x connections git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1771000 13f79535-47bb-0310-9956-ffa450edef68 --- modules/http2/h2_h2.c | 3 ++- modules/http2/h2_proxy_session.c | 24 +++++++++++++++++++----- modules/http2/h2_proxy_session.h | 2 ++ modules/http2/h2_session.c | 2 ++ modules/http2/h2_version.h | 4 ++-- modules/http2/mod_proxy_http2.c | 7 +++++-- 6 files changed, 32 insertions(+), 10 deletions(-) diff --git a/modules/http2/h2_h2.c b/modules/http2/h2_h2.c index 8ca8ccb55f..d1743386f8 100644 --- a/modules/http2/h2_h2.c +++ b/modules/http2/h2_h2.c @@ -684,7 +684,8 @@ static int h2_h2_pre_close_conn(conn_rec *c) static void check_push(request_rec *r, const char *tag) { const h2_config *conf = h2_config_rget(r); - if (conf && conf->push_list && conf->push_list->nelts > 0) { + if (!r->expecting_100 + && conf && conf->push_list && conf->push_list->nelts > 0) { int i, old_status; const char *old_line; ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, diff --git a/modules/http2/h2_proxy_session.c b/modules/http2/h2_proxy_session.c index b1929f70b0..25d1eb3d18 100644 --- a/modules/http2/h2_proxy_session.c +++ b/modules/http2/h2_proxy_session.c @@ -160,10 +160,17 @@ static int on_frame_recv(nghttp2_session *ngh2, const nghttp2_frame *frame, } r = stream->r; if (r->status >= 100 && r->status < 200) { - ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, - "h2_proxy_session(%s): got interim HEADERS, status=%d", - session->id, r->status); + /* By default, we will forward all interim responses when + * we are sitting on a HTTP/2 connection to the client */ + int forward = session->h2_front; switch(r->status) { + case 100: + if (stream->waiting_on_100) { + stream->waiting_on_100 = 0; + r->status_line = ap_get_status_line(r->status); + forward = 1; + } + break; case 103: /* workaround until we get this into http protocol base * parts. without this, unknown codes are converted to @@ -174,9 +181,14 @@ static int on_frame_recv(nghttp2_session *ngh2, const nghttp2_frame *frame, r->status_line = ap_get_status_line(r->status); break; } - ap_send_interim_response(r, 1); + ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(03487) + "h2_proxy_session(%s): got interim HEADERS, " + "status=%d, will forward=%d", + session->id, r->status, forward); + if (forward) { + ap_send_interim_response(r, 1); + } } - stream->waiting_on_100 = 0; stream_resume(stream); break; case NGHTTP2_PING: @@ -582,6 +594,7 @@ static int on_invalid_header_cb(nghttp2_session *ngh2, h2_proxy_session *h2_proxy_session_setup(const char *id, proxy_conn_rec *p_conn, proxy_server_conf *conf, + int h2_front, unsigned char window_bits_connection, unsigned char window_bits_stream, h2_proxy_request_done *done) @@ -602,6 +615,7 @@ h2_proxy_session *h2_proxy_session_setup(const char *id, proxy_conn_rec *p_conn, session->conf = conf; session->pool = p_conn->scpool; session->state = H2_PROXYS_ST_INIT; + session->h2_front = h2_front; session->window_bits_stream = window_bits_stream; session->window_bits_connection = window_bits_connection; session->streams = h2_proxy_ihash_create(pool, offsetof(h2_proxy_stream, id)); diff --git a/modules/http2/h2_proxy_session.h b/modules/http2/h2_proxy_session.h index 709fe4b0b7..c9820563f5 100644 --- a/modules/http2/h2_proxy_session.h +++ b/modules/http2/h2_proxy_session.h @@ -64,6 +64,7 @@ struct h2_proxy_session { unsigned int aborted : 1; unsigned int check_ping : 1; + unsigned int h2_front : 1; /* if front-end connection is HTTP/2 */ h2_proxy_request_done *done; void *user_data; @@ -86,6 +87,7 @@ struct h2_proxy_session { h2_proxy_session *h2_proxy_session_setup(const char *id, proxy_conn_rec *p_conn, proxy_server_conf *conf, + int h2_front, unsigned char window_bits_connection, unsigned char window_bits_stream, h2_proxy_request_done *done); diff --git a/modules/http2/h2_session.c b/modules/http2/h2_session.c index 5cb63d00b4..7225201bfc 100644 --- a/modules/http2/h2_session.c +++ b/modules/http2/h2_session.c @@ -1473,6 +1473,8 @@ static apr_status_t on_stream_headers(h2_session *session, h2_stream *stream, */ if (!stream->initiated_on && !stream->has_response + && stream->request && stream->request->method + && !strcmp("GET", stream->request->method) && (headers->status < 400) && (headers->status != 304) && h2_session_push_enabled(session)) { diff --git a/modules/http2/h2_version.h b/modules/http2/h2_version.h index ef185663a4..27a298b3b9 100644 --- a/modules/http2/h2_version.h +++ b/modules/http2/h2_version.h @@ -26,7 +26,7 @@ * @macro * Version number of the http2 module as c string */ -#define MOD_HTTP2_VERSION "1.8.0" +#define MOD_HTTP2_VERSION "1.8.1" /** * @macro @@ -34,7 +34,7 @@ * release. This is a 24 bit number with 8 bits for major number, 8 bits * for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203. */ -#define MOD_HTTP2_VERSION_NUM 0x010800 +#define MOD_HTTP2_VERSION_NUM 0x010801 #endif /* mod_h2_h2_version_h */ diff --git a/modules/http2/mod_proxy_http2.c b/modules/http2/mod_proxy_http2.c index bbce1fc7ae..1e2affabe1 100644 --- a/modules/http2/mod_proxy_http2.c +++ b/modules/http2/mod_proxy_http2.c @@ -335,14 +335,17 @@ static apr_status_t next_request(h2_proxy_ctx *ctx, int before_leave) static apr_status_t proxy_engine_run(h2_proxy_ctx *ctx) { apr_status_t status = OK; + int h2_front; /* Step Four: Send the Request in a new HTTP/2 stream and * loop until we got the response or encounter errors. */ ap_log_cerror(APLOG_MARK, APLOG_TRACE1, 0, ctx->owner, "eng(%s): setup session", ctx->engine_id); - ctx->session = h2_proxy_session_setup(ctx->engine_id, ctx->p_conn, ctx->conf, - 30, h2_proxy_log2((int)ctx->req_buffer_size), + h2_front = is_h2? is_h2(ctx->owner) : 0; + ctx->session = h2_proxy_session_setup(ctx->engine_id, ctx->p_conn, ctx->conf, + h2_front, 30, + h2_proxy_log2((int)ctx->req_buffer_size), request_done); if (!ctx->session) { ap_log_cerror(APLOG_MARK, APLOG_DEBUG, 0, ctx->owner, -- GitLab From 3ef7cd36ea6b732f23bca3be8c6af661abe8ddaf Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Wed, 23 Nov 2016 16:57:20 +0000 Subject: [PATCH 010/224] backport prop git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1771005 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/STATUS b/STATUS index 08030e72f8..2d7ee85b9e 100644 --- a/STATUS +++ b/STATUS @@ -226,6 +226,12 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: docs: https://svn.apache.org/r1770771 (in addition to the above) +1: sf, jim + *) mod_ratelimit: Allow for initial burst of data before we start + throttling: PR 60145 + trunk patches: + https://svn.apache.org/r1770951 + 2.4.x patch: trunk works modulo CHANGES and next-number + +1: jim PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From 9fe3e16fb9a65897a48f3ae023c6be3ab499f6bc Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Wed, 23 Nov 2016 18:20:10 +0000 Subject: [PATCH 011/224] Merge of r1771001,1771015 from trunk: mod_http2: new directive H2EarlyHints git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1771018 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ docs/manual/mod/mod_http2.xml | 27 +++++++++++++++++++++++++++ modules/http2/h2_config.c | 26 +++++++++++++++++++++++++- modules/http2/h2_config.h | 2 ++ modules/http2/h2_session.c | 8 ++++++++ modules/http2/h2_version.h | 4 ++-- 6 files changed, 67 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 2861e58575..0f4e175b81 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ Changes with Apache 2.4.24 + *) mod_http2: new directive 'H2EarlyHints' to enable sending of HTTP status + 103 interim responses. Disabled by default. [Stefan Eissing] + *) mod_ssl: Fix quick renegotiation (OptRenegotiaton) with no intermediate in the client certificate chain. PR 55786. [Yann Ylavic] diff --git a/docs/manual/mod/mod_http2.xml b/docs/manual/mod/mod_http2.xml index 02134bbe9f..b7dcc959be 100644 --- a/docs/manual/mod/mod_http2.xml +++ b/docs/manual/mod/mod_http2.xml @@ -972,4 +972,31 @@ H2TLSCoolDownSecs 0 + + H2EarlyHints + Determine sending of 103 status codes + H2EarlyHints on|off + H2EarlyHints off + + server config + virtual host + + Available in version 2.4.24 and later. + + +

+ This setting controls if HTTP status 103 interim responses are + forwarded to the client or not. By default, this is currently + not the case since a range of clients still have trouble with + unexpected interim responses. +

+

+ When set to on, PUSH resources announced with + H2PushResource will trigger an interim 103 response + before the final response. The 103 response will carry Link + headers that advise the preload of such resources. +

+
+
+ diff --git a/modules/http2/h2_config.c b/modules/http2/h2_config.c index dec859705a..669d20e75c 100644 --- a/modules/http2/h2_config.c +++ b/modules/http2/h2_config.c @@ -62,7 +62,8 @@ static h2_config defconf = { NULL, /* map of content-type to priorities */ 256, /* push diary size */ 0, /* copy files across threads */ - NULL /* push list */ + NULL, /* push list */ + 0, /* early hints, http status 103 */ }; void h2_config_init(apr_pool_t *pool) @@ -97,6 +98,7 @@ static void *h2_config_create(apr_pool_t *pool, conf->push_diary_size = DEF_VAL; conf->copy_files = DEF_VAL; conf->push_list = NULL; + conf->early_hints = DEF_VAL; return conf; } @@ -148,6 +150,7 @@ static void *h2_config_merge(apr_pool_t *pool, void *basev, void *addv) else { n->push_list = add->push_list? add->push_list : base->push_list; } + n->early_hints = H2_CONFIG_GET(add, base, early_hints); return n; } @@ -203,6 +206,8 @@ apr_int64_t h2_config_geti64(const h2_config *conf, h2_config_var_t var) return H2_CONFIG_GET(conf, &defconf, push_diary_size); case H2_CONF_COPY_FILES: return H2_CONFIG_GET(conf, &defconf, copy_files); + case H2_CONF_EARLY_HINTS: + return H2_CONFIG_GET(conf, &defconf, early_hints); default: return DEF_VAL; } @@ -588,6 +593,23 @@ static const char *h2_conf_add_push_res(cmd_parms *cmd, void *dirconf, return NULL; } +static const char *h2_conf_set_early_hints(cmd_parms *parms, + void *arg, const char *value) +{ + h2_config *cfg = (h2_config *)h2_config_sget(parms->server); + if (!strcasecmp(value, "On")) { + cfg->early_hints = 1; + return NULL; + } + else if (!strcasecmp(value, "Off")) { + cfg->early_hints = 0; + return NULL; + } + + (void)arg; + return "value must be On or Off"; +} + #define AP_END_CMD AP_INIT_TAKE1(NULL, NULL, NULL, RSRC_CONF, NULL) const command_rec h2_cmds[] = { @@ -631,6 +653,8 @@ const command_rec h2_cmds[] = { OR_FILEINFO, "on to perform copy of file data"), AP_INIT_TAKE123("H2PushResource", h2_conf_add_push_res, NULL, OR_FILEINFO, "add a resource to be pushed in this location/on this server."), + AP_INIT_TAKE1("H2EarlyHints", h2_conf_set_early_hints, NULL, + RSRC_CONF, "on to enable interim status 103 responses"), AP_END_CMD }; diff --git a/modules/http2/h2_config.h b/modules/http2/h2_config.h index 08bde3b740..1f2fe309d0 100644 --- a/modules/http2/h2_config.h +++ b/modules/http2/h2_config.h @@ -41,6 +41,7 @@ typedef enum { H2_CONF_PUSH, H2_CONF_PUSH_DIARY_SIZE, H2_CONF_COPY_FILES, + H2_CONF_EARLY_HINTS, } h2_config_var_t; struct apr_hash_t; @@ -77,6 +78,7 @@ typedef struct h2_config { int push_diary_size; /* # of entries in push diary */ int copy_files; /* if files shall be copied vs setaside on output */ apr_array_header_t *push_list;/* list of h2_push_res configurations */ + int early_hints; /* support status code 103 */ } h2_config; diff --git a/modules/http2/h2_session.c b/modules/http2/h2_session.c index 7225201bfc..0a29a3b18c 100644 --- a/modules/http2/h2_session.c +++ b/modules/http2/h2_session.c @@ -1501,6 +1501,14 @@ static apr_status_t on_stream_headers(h2_session *session, h2_stream *stream, apr_itoa(stream->pool, connFlowOut)); } + if (headers->status == 103 + && !h2_config_geti(session->config, H2_CONF_EARLY_HINTS)) { + /* suppress sending this to the client, it might have triggered + * pushes and served its purpose nevertheless */ + rv = 0; + goto leave; + } + ngh = h2_util_ngheader_make_res(stream->pool, headers->status, hout); rv = nghttp2_submit_response(session->ngh2, stream->id, ngh->nv, ngh->nvlen, pprovider); diff --git a/modules/http2/h2_version.h b/modules/http2/h2_version.h index 27a298b3b9..f272c3c71f 100644 --- a/modules/http2/h2_version.h +++ b/modules/http2/h2_version.h @@ -26,7 +26,7 @@ * @macro * Version number of the http2 module as c string */ -#define MOD_HTTP2_VERSION "1.8.1" +#define MOD_HTTP2_VERSION "1.8.2" /** * @macro @@ -34,7 +34,7 @@ * release. This is a 24 bit number with 8 bits for major number, 8 bits * for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203. */ -#define MOD_HTTP2_VERSION_NUM 0x010801 +#define MOD_HTTP2_VERSION_NUM 0x010802 #endif /* mod_h2_h2_version_h */ -- GitLab From 5dbcdeae3c70ef74f15c1a0f2b8915161beec0f1 Mon Sep 17 00:00:00 2001 From: Lucien Gentis Date: Sun, 27 Nov 2016 13:45:20 +0000 Subject: [PATCH 012/224] UTF-8 encoding. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1771595 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/mod_mime_magic.xml.fr | 106 +++--- docs/manual/mod/mod_nw_ssl.xml.fr | 36 +- docs/manual/mod/mod_proxy_ajp.xml.fr | 464 +++++++++++++------------- 3 files changed, 303 insertions(+), 303 deletions(-) diff --git a/docs/manual/mod/mod_mime_magic.xml.fr b/docs/manual/mod/mod_mime_magic.xml.fr index 4edd85e524..47c194f8c9 100644 --- a/docs/manual/mod/mod_mime_magic.xml.fr +++ b/docs/manual/mod/mod_mime_magic.xml.fr @@ -1,4 +1,4 @@ - + @@ -25,55 +25,55 @@ mod_mime_magic -Détermine le type MIME d'un fichier à partir de quelques +Détermine le type MIME d'un fichier à partir de quelques octets de son contenu Extension mod_mime_magic.c mime_magic_module -

Ce module permet de déterminer le type - MIME des fichiers de la même manière que la commande Unix - file(1), à savoir en se basant sur les premiers octets - du fichier. Il est conçu comme une "seconde ligne de défense" pour - les cas où mod_mime ne parvient pas à déterminer le +

Ce module permet de déterminer le type + MIME des fichiers de la même manière que la commande Unix + file(1), à savoir en se basant sur les premiers octets + du fichier. Il est conçu comme une "seconde ligne de défense" pour + les cas où mod_mime ne parvient pas à déterminer le type du fichier.

-

Ce module est dérivé d'une version libre de la commande Unix +

Ce module est dérivé d'une version libre de la commande Unix file(1) qui utilise des "nombres magiques" et autres marques distinctives issus du contenu du fichier pour essayer de - déterminer le type de contenu. Ce module n'est activé que si le - fichier magique est spécifié par la directive MimeMagicFile.

Format du fichier magique -

Le fichier contient du texte ASCII sur 4 à 5 colonnes. Les lignes - vides sont autorisées mais ignorées. Toute ligne commençant par un - dièse (#) est un commentaire. Les autres lignes sont - interprétées en colonnes comme suit :

+

Le fichier contient du texte ASCII sur 4 à 5 colonnes. Les lignes + vides sont autorisées mais ignorées. Toute ligne commençant par un + dièse (#) est un commentaire. Les autres lignes sont + interprétées en colonnes comme suit :

- + - - + @@ -101,7 +101,7 @@ octets de son contenu
ColonneDescription
1numéro de l'octet à partir duquel la vérification débute
- ">" indique une dépendance par rapport à la - dernière ligne non-">"
numéro de l'octet à partir duquel la vérification débute
+ ">" indique une dépendance par rapport à la + dernière ligne non-">"
2

type de donnée à rechercher

+

type de donnée à rechercher

- + - + @@ -91,7 +91,7 @@ octets de son contenu
bytecaractère unique
caractère unique
short entier sur 16 bits selon l'ordre de la machine
long entier sur 32 bits selon l'ordre de la machine
stringchaîne de taille choisie
chaîne de taille choisie
date date au format entier long (secondes depuis le temps Unix epoch/1970)
beshort
3contenu des données à rechercher
contenu des données à rechercher
4 type MIME si correspondance

Par exemple, les lignes du fichier magique suivantes - permettraient de reconnaître certains formats audio :

+ permettraient de reconnaître certains formats audio :

# Sun/NeXT audio data
@@ -116,10 +116,10 @@ octets de son contenu
 >12    belong     23       audio/x-adpcm
-

Et celles-ci permettraient de reconnaître la différence entre les +

Et celles-ci permettraient de reconnaître la différence entre les fichiers *.doc qui contiennent des documents Microsoft Word et les documents FrameMaker (ce sont des formats de fichiers - incompatibles qui possèdent le même suffixe).

+ incompatibles qui possèdent le même suffixe).

# Frame
@@ -137,45 +137,45 @@ octets de son contenu
 0  string  \333\245-\0\0\0           application/msword
-

Un champ optionnel codage MIME peut être ajouté dans la cinquième - colonne. Par exemple, cette ligne permet de reconnaître les fichiers - compressés par gzip et définissent le type de codage.

+

Un champ optionnel codage MIME peut être ajouté dans la cinquième + colonne. Par exemple, cette ligne permet de reconnaître les fichiers + compressés par gzip et définissent le type de codage.

-
# gzip (GNU zip, à ne pas confondre avec
+
# gzip (GNU zip, à ne pas confondre avec
 #       l'archiveur zip [Info-ZIP/PKWARE])
 
 0  string  \037\213  application/octet-stream  x-gzip
-
Problèmes liés aux performances -

Ce module n'est pas fait pour tous les systèmes. Si votre système - parvient à peine à supporter sa charge, ou si vous testez les - performances d'un serveur web, il est déconseillé d'utiliser ce - module car son fonctionnement a un prix en matière de ressources - consommées.

+
Problèmes liés aux performances +

Ce module n'est pas fait pour tous les systèmes. Si votre système + parvient à peine à supporter sa charge, ou si vous testez les + performances d'un serveur web, il est déconseillé d'utiliser ce + module car son fonctionnement a un prix en matière de ressources + consommées.

-

Des efforts ont cependant été fournis pour améliorer les +

Des efforts ont cependant été fournis pour améliorer les performances du code original de la commande file(1) en - l'adaptant pour fonctionner sur un serveur web à forte charge. Il a - été conçu pour un serveur sur lequel des milliers d'utilisateurs - publient leurs propres documents, ce qui est probablement très - courant sur un intranet. Il s'avère souvent bénéfique qu'un serveur - puisse prendre des décisions plus pertinentes à propos du contenu + l'adaptant pour fonctionner sur un serveur web à forte charge. Il a + été conçu pour un serveur sur lequel des milliers d'utilisateurs + publient leurs propres documents, ce qui est probablement très + courant sur un intranet. Il s'avère souvent bénéfique qu'un serveur + puisse prendre des décisions plus pertinentes à propos du contenu d'un fichier que celles se basant sur le nom du fichier seul, ne serait-ce que pour diminuer le nombre d'appels du type "pourquoi ma page ne s'affiche-t-elle pas ?" survenant lorsque les utilisateurs - nomment leurs fichiers incorrectement. Vous devez déterminer si la - charge supplémentaire convient à votre environnement.

+ nomment leurs fichiers incorrectement. Vous devez déterminer si la + charge supplémentaire convient à votre environnement.

Notes

Les notes suivantes s'appliquent au module mod_mime_magic et sont incluses ici pour - conformité avec les restrictions de copyright des contributeurs - qui requièrent de les accepter.

-

Note de traduction : ces informations de type légal ne sont pas traductibles

+ conformité avec les restrictions de copyright des contributeurs + qui requièrent de les accepter.

+

Note de traduction : ces informations de type légal ne sont pas traductibles

mod_mime_magic: MIME type lookup via file magic numbers
@@ -257,22 +257,22 @@ octets de son contenu MimeMagicFile -Active la détermination du type MIME en se basant sur le +Active la détermination du type MIME en se basant sur le contenu du fichier et en utilisant le fichier magique -spécifié +spécifié MimeMagicFile chemin-fichier server configvirtual host

La directive MimeMagicFile permet - d'activer ce module, le fichier par défaut fourni étant - conf/magic. Les chemins sans slash '/' de début sont - relatifs au répertoire défini par la directive conf/magic. Les chemins sans slash '/' de début sont + relatifs au répertoire défini par la directive ServerRoot. Les serveurs virtuels - utilisent le même fichier que le serveur principal sauf si un - fichier spécifique a été défini pour ce serveur virtuel, auquel cas - c'est ce dernier fichier qui sera utilisé.

+ utilisent le même fichier que le serveur principal sauf si un + fichier spécifique a été défini pour ce serveur virtuel, auquel cas + c'est ce dernier fichier qui sera utilisé.

Exemple diff --git a/docs/manual/mod/mod_nw_ssl.xml.fr b/docs/manual/mod/mod_nw_ssl.xml.fr index 66f6eb5617..5f4f7a398a 100644 --- a/docs/manual/mod/mod_nw_ssl.xml.fr +++ b/docs/manual/mod/mod_nw_ssl.xml.fr @@ -1,4 +1,4 @@ - + @@ -32,39 +32,39 @@ NetWare seulement -

Ce module active le chiffrement SSL sur un port spécifique. Il - s'appuie sur la fonctionnalité de chiffrement SSL intégrée au - système d'exploitation Netware.

+

Ce module active le chiffrement SSL sur un port spécifique. Il + s'appuie sur la fonctionnalité de chiffrement SSL intégrée au + système d'exploitation Netware.

SecureListen Active le chiffrement SSL pour le port -spécifié +spécifié SecureListen [adresse-IP:]num-port nom-certificat [MUTUAL] server config -

Cette directive permet de spécifier le port et le nom de - certificat de style eDirectory qui seront utilisés pour activer le - chiffrement SSL. En outre, un troisième paramètre optionnel permet +

Cette directive permet de spécifier le port et le nom de + certificat de style eDirectory qui seront utilisés pour activer le + chiffrement SSL. En outre, un troisième paramètre optionnel permet d'activer l'authentification mutuelle.

NWSSLTrustedCerts -Liste de certificats clients supplémentaires +Liste de certificats clients supplémentaires NWSSLTrustedCerts nom-fichier [nom-fichier] ... server config -

Cette directive permet de spécifier une liste de fichiers (au - format DER) contenant des certificats clients utilisés lors de - l'établissement d'une connexion SSL mandatée. Chaque certificat - client utilisé par un serveur doit être enregistré séparément dans +

Cette directive permet de spécifier une liste de fichiers (au + format DER) contenant des certificats clients utilisés lors de + l'établissement d'une connexion SSL mandatée. Chaque certificat + client utilisé par un serveur doit être enregistré séparément dans son propre fichier .der.

@@ -72,15 +72,15 @@ spécifié NWSSLUpgradeable Permet de promouvoir une connexion non SSL au statut de -connexion SSL à la demande +connexion SSL à la demande NWSSLUpgradeable [adresse-IP:]num-port server config -

Cette directive permet de promouvoir une connexion établie sur - l'adresse IP et/ou le port spécifiés au statut de connexion SSL à la - demande du client. L'adresse et/ou le port doivent avoir été définis - au préalable par une directive Cette directive permet de promouvoir une connexion établie sur + l'adresse IP et/ou le port spécifiés au statut de connexion SSL à la + demande du client. L'adresse et/ou le port doivent avoir été définis + au préalable par une directive Listen.

diff --git a/docs/manual/mod/mod_proxy_ajp.xml.fr b/docs/manual/mod/mod_proxy_ajp.xml.fr index 3b01012a85..36bf317365 100644 --- a/docs/manual/mod/mod_proxy_ajp.xml.fr +++ b/docs/manual/mod/mod_proxy_ajp.xml.fr @@ -1,4 +1,4 @@ - + @@ -33,20 +33,20 @@ Disponible depuis la version 2.1 d'Apache -

Ce module nécessite le chargement de Ce module nécessite le chargement de mod_proxy. Il fournit le support du Protocole Apache - JServ version 1.3 (nommé dans la suite de ce document + JServ version 1.3 (nommé dans la suite de ce document AJP13).

-

Pour être en mesure d'exploiter le protocole AJP13, - il est donc nécessaire de charger les modules +

Pour être en mesure d'exploiter le protocole AJP13, + il est donc nécessaire de charger les modules mod_proxy et mod_proxy_ajp.

Avertissement -

N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les +

N'activez pas la fonctionnalité de mandataire avant d'avoir sécurisé votre serveur. Les serveurs mandataires ouverts sont dangereux non seulement pour - votre réseau, mais aussi pour l'Internet au sens large.

+ votre réseau, mais aussi pour l'Internet au sens large.

@@ -56,8 +56,8 @@ d'environnement
Utilisation

Ce module permet de mandater en inverse un serveur d'application - d'arrière-plan (comme Apache Tomcat) qui utilise le protocole AJP13. - Son utilisation est similaire à celle d'un mandataire inverse HTTP, + d'arrière-plan (comme Apache Tomcat) qui utilise le protocole AJP13. + Son utilisation est similaire à celle d'un mandataire inverse HTTP, mais s'appuie sur le prefixe ajp:// :

Mandataire inverse simple @@ -66,8 +66,8 @@ d'environnement -

On peut aussi configurer un répartiteur de charge :

- Mandataire inverse avec répartiteur de charge +

On peut aussi configurer un répartiteur de charge :

+ Mandataire inverse avec répartiteur de charge <Proxy balancer://cluster> BalancerMember "ajp://app1.example.com:8009" loadfactor=1 @@ -78,143 +78,143 @@ ProxyPass "/app" "balancer://cluster/app" -

Notez qu'en général, la directive Notez qu'en général, la directive ProxyPassReverse n'est pas - nécessaire. La requête AJP inclut l'en-tête host original fourni - au mandataire, et le serveur d'application est sensé générer des - en-têtes auto-référençants relatifs à cet hôte ; aucune réécriture - n'est donc nécessaire.

+ nécessaire. La requête AJP inclut l'en-tête host original fourni + au mandataire, et le serveur d'application est sensé générer des + en-têtes auto-référençants relatifs à cet hôte ; aucune réécriture + n'est donc nécessaire.

La situation la plus courante dans laquelle la directive ProxyPassReverse est nécessaire se + module="mod_proxy">ProxyPassReverse est nécessaire se rencontre lorsque le chemin de l'URL au niveau du mandataire est - différente de celle du serveur d'arrière-plan. Dans ce cas, un - en-tête redirect peut être réécrit relativement à l'URL de l'hôte - original (et non du serveur d'arrière-plan ajp:// URL) + différente de celle du serveur d'arrière-plan. Dans ce cas, un + en-tête redirect peut être réécrit relativement à l'URL de l'hôte + original (et non du serveur d'arrière-plan ajp:// URL) ; par exemple :

- Réécriture d'un chemin mandaté + Réécriture d'un chemin mandaté ProxyPass "/apps/foo" "ajp://backend.example.com:8009/foo" ProxyPassReverse "/apps/foo" "http://www.example.com/foo" -

Il est cependant préférable en général de déployer l'application - sur le serveur d'arrière-plan avec le même chemin que sur le +

Il est cependant préférable en général de déployer l'application + sur le serveur d'arrière-plan avec le même chemin que sur le mandataire.

Variables d'environnement -

Les variables d'environnement dont le nom possède le préfixe +

Les variables d'environnement dont le nom possède le préfixe AJP_ sont transmises au serveur original en tant - qu'attributs de requête AJP (le préfixe AJP_ étant supprimé du nom - de la clé).

+ qu'attributs de requête AJP (le préfixe AJP_ étant supprimé du nom + de la clé).

Vue d'ensemble du protocole -

Le protocole AJP13 est orienté paquet. Le format - binaire a été préféré, probablement pour des raisons de +

Le protocole AJP13 est orienté paquet. Le format + binaire a été préféré, probablement pour des raisons de performances, au format texte pourtant plus lisible. Le serveur web communique avec le conteneur de servlets sur une connexion TCP. Pour - diminuer la charge induite par le processus de création de socket, + diminuer la charge induite par le processus de création de socket, le serveur web va tenter d'utiliser des connexions TCP persistantes - avec le conteneur de servlets, et de réutiliser les connexions - pendant plusieurs cycles requêtes/réponse.

-

Lorsqu'une connexion a été assignée à une requête particulière, - elle ne sera utilisée pour aucune autre jusqu'à ce que le cycle de - traitement de la requête se soit terminé. En d'autres termes, il n'y - a pas de multiplexage des requêtes sur une connexion. Ceci se - traduit par un code beaucoup plus simple à chaque extrémité de la - connexion, un nombre plus important de connexions étant cependant - ouvertes en même temps.

+ avec le conteneur de servlets, et de réutiliser les connexions + pendant plusieurs cycles requêtes/réponse.

+

Lorsqu'une connexion a été assignée à une requête particulière, + elle ne sera utilisée pour aucune autre jusqu'à ce que le cycle de + traitement de la requête se soit terminé. En d'autres termes, il n'y + a pas de multiplexage des requêtes sur une connexion. Ceci se + traduit par un code beaucoup plus simple à chaque extrémité de la + connexion, un nombre plus important de connexions étant cependant + ouvertes en même temps.

Lorsque le serveur web a ouvert une connexion vers le conteneur - de servlets, celle-ci peut se trouver dans l'un des états suivants + de servlets, celle-ci peut se trouver dans l'un des états suivants :

    -
  • Idle
    Aucune requête n'est traitée sur cette +
  • Idle
    Aucune requête n'est traitée sur cette connexion.
  • Assigned
    La connexion fait l'objet d'un traitement de - requête.
  • + requête.
-

Lorsqu'une connexion est assignée au traitement d'une requête - particulière, les informations de base de cette dernière (comme les - en-têtes HTTP, etc...) sont envoyées sur la connexion sous une forme - très condensée (par exemple les chaînes courantes sont codées sous - forme d'entiers). Vous trouverez des détails sur ce format plus - loin dans la structure des paquets de requête. Si la requête possède - un corps (content-length > 0), il est envoyé dans un - paquet séparé immédiatement après.

-

A ce moment, le conteneur est probablement prêt à traiter la - requête. Au cours de ce traitement, il peut renvoyer les messages +

Lorsqu'une connexion est assignée au traitement d'une requête + particulière, les informations de base de cette dernière (comme les + en-têtes HTTP, etc...) sont envoyées sur la connexion sous une forme + très condensée (par exemple les chaînes courantes sont codées sous + forme d'entiers). Vous trouverez des détails sur ce format plus + loin dans la structure des paquets de requête. Si la requête possède + un corps (content-length > 0), il est envoyé dans un + paquet séparé immédiatement après.

+

A ce moment, le conteneur est probablement prêt à traiter la + requête. Au cours de ce traitement, il peut renvoyer les messages suivants au serveur web :

    -
  • SEND_HEADERS
    Renvoie un jeu d'en-têtes au navigateur.
  • -
  • SEND_BODY_CHUNK
    Renvoie un tronçon de corps de requête au +
  • SEND_HEADERS
    Renvoie un jeu d'en-têtes au navigateur.
  • +
  • SEND_BODY_CHUNK
    Renvoie un tronçon de corps de requête au navigateur.
  • -
  • GET_BODY_CHUNK
    Reçoit un autre tronçon de données de la - requête si elle n'a pas encore été transmise intégralement. Ce type - de transmission est nécessaire car les paquets possèdent une taille - maximale fixe, et des quantités quelconques de données peuvent être - contenues dans le corps de la requête (pour un chargement de - fichier, par exemple). Notez que cela n'a rien à voir avec le - transfert HTTP fractionné.
  • +
  • GET_BODY_CHUNK
    Reçoit un autre tronçon de données de la + requête si elle n'a pas encore été transmise intégralement. Ce type + de transmission est nécessaire car les paquets possèdent une taille + maximale fixe, et des quantités quelconques de données peuvent être + contenues dans le corps de la requête (pour un chargement de + fichier, par exemple). Notez que cela n'a rien à voir avec le + transfert HTTP fractionné.
  • END_RESPONSE
    Termine le cycle du traitement de la - requête.
  • + requête.
-

Chaque message est associé à un paquet de données formaté - différemment. Voir plus loin les structures des paquets de réponses - pour plus de détails.

+

Chaque message est associé à un paquet de données formaté + différemment. Voir plus loin les structures des paquets de réponses + pour plus de détails.

Structure de base des paquets -

Ce protocole hérite en partie de XDR, mais il diffère sur de +

Ce protocole hérite en partie de XDR, mais il diffère sur de nombreux points (pas d'alignement sur 4 bits, par exemple).

-

AJP13 utilise les octets selon leur ordre d'arrivée par le réseau - pour tous les types de données.

-

Le protocole comporte quatre types de données : octets, booléens, - entiers et chaînes de caractères.

+

AJP13 utilise les octets selon leur ordre d'arrivée par le réseau + pour tous les types de données.

+

Le protocole comporte quatre types de données : octets, booléens, + entiers et chaînes de caractères.

Octet
Un seul octet.
-
Booléen
+
Booléen
Un seul octet, 1 = vrai, 0 = faux. L'utilisation d'autres valeurs non nulles (dans le style C) peut fonctionner dans certains cas, mais pas dans certains autres..
Entier
-
Un nombre compris entre 0 et 2^16 (32768), stocké - sur 2 octets en débutant par l'octet de poids forts.
-
Chaîne
-
Une chaîne de taille variable (longueur limitée à 2^16). Elle - est codée comme suit : les deux premiers octets représentent la - longueur de la chaîne, les octets suivants constituent la chaîne +
Un nombre compris entre 0 et 2^16 (32768), stocké + sur 2 octets en débutant par l'octet de poids forts.
+
Chaîne
+
Une chaîne de taille variable (longueur limitée à 2^16). Elle + est codée comme suit : les deux premiers octets représentent la + longueur de la chaîne, les octets suivants constituent la chaîne proprement dite (y compris le '\0' final). Notez que la longueur - encodée dans les deux premiers octets ne prend pas en compte le - '\0' final, de la même manière que strlen. Cela peut - prêter à confusion du point de vue de Java qui est surchargé de - déclarations d'autoincrémentation étranges destinées à traiter + encodée dans les deux premiers octets ne prend pas en compte le + '\0' final, de la même manière que strlen. Cela peut + prêter à confusion du point de vue de Java qui est surchargé de + déclarations d'autoincrémentation étranges destinées à traiter ces terminateurs. Je suppose que le but dans lequel cela a - été conçu ainsi était de permettre au code C d'être plus efficace - lors de la lecture de chaînes en provenance du conteneur de - servlets -- avec le caractère \0 final, le code C peut transmettre - des références dans un seul tampon, sans avoir à effectuer de - copie. En l'absence du caractère \0 final, le code C doit + été conçu ainsi était de permettre au code C d'être plus efficace + lors de la lecture de chaînes en provenance du conteneur de + servlets -- avec le caractère \0 final, le code C peut transmettre + des références dans un seul tampon, sans avoir à effectuer de + copie. En l'absence du caractère \0 final, le code C doit effectuer une copie afin de pouvoir tenir compte de sa notion de - chaîne.
+ chaîne.
Taille du paquet -

Selon la majorité du code, la taille maximale du paquet est de - 8 * 1024 bytes (8K). La taille réelle du paquet est - encodée dans l'en-tête.

+

Selon la majorité du code, la taille maximale du paquet est de + 8 * 1024 bytes (8K). La taille réelle du paquet est + encodée dans l'en-tête.

-
En-têtes de paquet -

Les paquets envoyés par le serveur vers le conteneur commencent - par 0x1234. Les paquets envoyés par le conteneur vers - le serveur commencent par AB (c'est à dire le code - ASCII de A suivi du code ASCII de B). Ensuite, vient un entier (codé - comme ci-dessus) représentant la longueur des données transmises. - Bien que ceci puisse faire croire que la taille maximale des données - est de 2^16, le code définit en fait ce maximum à 8K.

+
En-têtes de paquet +

Les paquets envoyés par le serveur vers le conteneur commencent + par 0x1234. Les paquets envoyés par le conteneur vers + le serveur commencent par AB (c'est à dire le code + ASCII de A suivi du code ASCII de B). Ensuite, vient un entier (codé + comme ci-dessus) représentant la longueur des données transmises. + Bien que ceci puisse faire croire que la taille maximale des données + est de 2^16, le code définit en fait ce maximum à 8K.

@@ -232,7 +232,7 @@ ProxyPassReverse "/apps/foo" "http://www.example.com/foo" - +
Contenu 0x12 0x34Taille des données (n)Taille des données (n) Data
@@ -254,15 +254,15 @@ ProxyPassReverse "/apps/foo" "http://www.example.com/foo" Contenu A B - Taille des données (n) + Taille des données (n) Data

Pour la plupart des paquets, le premier octet de la charge utile - encode le type de message, à l'exception des paquets contenant un - corps de requête envoyés du serveur vers le conteneur -- ils - comportent un en-tête standard (0x1234 suivi de la taille - du paquet), mais celui-ci n'est suivi d'aucun préfixe.

+ encode le type de message, à l'exception des paquets contenant un + corps de requête envoyés du serveur vers le conteneur -- ils + comportent un en-tête standard (0x1234 suivi de la taille + du paquet), mais celui-ci n'est suivi d'aucun préfixe.

Le serveur web peut envoyer les messages suivants au conteneur de servlets :

@@ -274,39 +274,39 @@ ProxyPassReverse "/apps/foo" "http://www.example.com/foo" - - + - - + + - + - - - + +
2Fait suivre la requêteDébute le cycle de traitement de la requête avec les données + Fait suivre la requêteDébute le cycle de traitement de la requête avec les données qui suivent.
7ArrêtLe serveur web demande au conteneur de s'arrêter.ArrêtLe serveur web demande au conteneur de s'arrêter.
8 PingLe serveur web demande au conteneur de prendre le contrôle - (phase de connexion sécurisée).Le serveur web demande au conteneur de prendre le contrôle + (phase de connexion sécurisée).
10 CPingLe serveur web demande au conteneur de répondre rapidement + Le serveur web demande au conteneur de répondre rapidement avec un CPong.
noneDonnéesTaille (2 octets) et les données correspondantes.DonnéesTaille (2 octets) et les données correspondantes.
-

À des fins de sécurité, le conteneur n'effectuera réellement son - Arrêt que si la demande provient de la machine par - laquelle il est hébergé.

-

Le premier paquet Données est envoyé immédiatement - après le paquet Faire suivre la requête par le serveur +

À des fins de sécurité, le conteneur n'effectuera réellement son + Arrêt que si la demande provient de la machine par + laquelle il est hébergé.

+

Le premier paquet Données est envoyé immédiatement + après le paquet Faire suivre la requête par le serveur web.

Le conteneur de servlets peut envoyer les types de messages suivants au serveur web :

@@ -319,43 +319,43 @@ ProxyPassReverse "/apps/foo" "http://www.example.com/foo" 3 - Envoi d'un tronçon de corps - Envoi d'un tronçon de corps depuis le conteneur de servlets + Envoi d'un tronçon de corps + Envoi d'un tronçon de corps depuis le conteneur de servlets vers le serveur web (et probablement vers le navigateur). 4 - Envoie les en-têtes - Envoi des en-têtes de réponse depuis le conteneur de + Envoie les en-têtes + Envoi des en-têtes de réponse depuis le conteneur de servlets vers le serveur web (et probablement vers le navigateur). 5 - Fin de la réponse - Marque la fin de la réponse (et par conséquent du cycle de - traitement de la requête). + Fin de la réponse + Marque la fin de la réponse (et par conséquent du cycle de + traitement de la requête). 6 - Réception du tronçon de corps suivant - Réception de la suite des données de la requête si elles - n'ont pas encore été entièrement transmises. + Réception du tronçon de corps suivant + Réception de la suite des données de la requête si elles + n'ont pas encore été entièrement transmises. 9 - Réponse CPong - La réponse à une requête CPing + Réponse CPong + La réponse à une requête CPing -

Chacun des messages ci-dessus possède une structure interne - différente dont vous trouverez les détails ci-dessous.

+

Chacun des messages ci-dessus possède une structure interne + différente dont vous trouverez les détails ci-dessous.

Structure des paquets de -requête -

Pour les messages de type Faire suivre la requête depuis +requête +

Pour les messages de type Faire suivre la requête depuis le serveur vers le conteneur :

 AJP13_FORWARD_REQUEST :=
@@ -373,18 +373,18 @@ AJP13_FORWARD_REQUEST :=
     attributes      *(attribut_name attribute_value)
     request_terminator (byte) OxFF
     
-

Les request_headers possèdent la structure suivante +

Les request_headers possèdent la structure suivante :

 req_header_name :=
-    sc_req_header_name | (string)  [voir ci-dessous pour la manière dont
-    ceci est interprété]
+    sc_req_header_name | (string)  [voir ci-dessous pour la manière dont
+    ceci est interprété]
 
 sc_req_header_name := 0xA0xx (integer)
 
 req_header_value := (string)
 
-

Les attributes sont optionnels et possèdent la +

Les attributes sont optionnels et possèdent la structure suivante :

 attribute_name := sc_a_name | (sc_a_req_attribute string)
@@ -392,18 +392,18 @@ attribute_name := sc_a_name | (sc_a_req_attribute string)
 attribute_value := (string)
 
     
-

Un des en-têtes les plus importants est +

Un des en-têtes les plus importants est content-length, car il indique si le conteneur doit ou - non attendre un autre paquet immédiatement.

-
Description détaillée de la requête que le serveur + non attendre un autre paquet immédiatement.</p> + <section><title>Description détaillée de la requête que le serveur fait suivre vers le conteneur
-
Préfixe de la requête -

Pour toutes les requêtes, ce préfixe est 2. Voir ci-dessus pour - les détails des autres codes de préfixes.

+
Préfixe de la requête +

Pour toutes les requêtes, ce préfixe est 2. Voir ci-dessus pour + les détails des autres codes de préfixes.

-
Méthode -

La méthode HTTP, encodée sous la forme d'un seul octet :

+
Méthode +

La méthode HTTP, encodée sous la forme d'un seul octet :

@@ -434,26 +434,26 @@ attribute_value := (string)
Nom commandeCode
OPTIONS1
BASELINE_CONTROL26
MKACTIVITY27
-

Les versions futures d'ajp13 pourront transmettre des méthodes - supplémentaires, même si elles ne font pas partie de cette +

Les versions futures d'ajp13 pourront transmettre des méthodes + supplémentaires, même si elles ne font pas partie de cette liste.

protocol, req_uri, remote_addr, remote_host, server_name, server_port, is_ssl -

Les significations de ces éléments sont triviales. Ils sont tous - obligatoires et seront envoyés avec chaque requête.

+

Les significations de ces éléments sont triviales. Ils sont tous + obligatoires et seront envoyés avec chaque requête.

-
En-têtes +
En-têtes

La structure de request_headers est la suivante - : tout d'abord, le nombre d'en-têtes num_headers est - encodé, suivi d'une liste de paires nom d'en-tête + : tout d'abord, le nombre d'en-têtes num_headers est + encodé, suivi d'une liste de paires nom d'en-tête req_header_name / valeur req_header_value. - Les noms d'en-têtes courants sont codés sous forme d'entiers afin de - gagner de la place. Si le nom d'en-tête ne fait partie de la liste - des en-têtes courants, il est encodé normalement (une chaîne de - caractères préfixée par la taille). La liste des en-têtes courants - sc_req_header_name avec leurs codes se présente comme - suit (il sont tous sensibles à la casse) :

+ Les noms d'en-têtes courants sont codés sous forme d'entiers afin de + gagner de la place. Si le nom d'en-tête ne fait partie de la liste + des en-têtes courants, il est encodé normalement (une chaîne de + caractères préfixée par la taille). La liste des en-têtes courants + sc_req_header_name avec leurs codes se présente comme + suit (il sont tous sensibles à la casse) :

@@ -477,39 +477,39 @@ attribute_value := (string)
NomValeur du codeNom du code
accept0xA001SC_REQ_ACCEPT
referer0xA00DSC_REQ_REFERER
user-agent0xA00ESC_REQ_USER_AGENT
-

Le code Java qui lit ceci extrait l'entier représenté par les +

Le code Java qui lit ceci extrait l'entier représenté par les deux premiers octets, et si le premier octet est - '0xA0', il utilise l'entier représenté par le deuxième - octet comme index d'un tableau de noms d'en-têtes. Si le premier - octet n'est pas 0xA0, l'entier représenté par les deux - octets est considéré comme la longueur d'une chaîne qui est alors + '0xA0', il utilise l'entier représenté par le deuxième + octet comme index d'un tableau de noms d'en-têtes. Si le premier + octet n'est pas 0xA0, l'entier représenté par les deux + octets est considéré comme la longueur d'une chaîne qui est alors lue.

-

Ceci ne peut fonctionner que si aucun nom d'en-tête ne possède - une taille supérieure à 0x9FFF (==0xA000 - 1), ce qui +

Ceci ne peut fonctionner que si aucun nom d'en-tête ne possède + une taille supérieure à 0x9FFF (==0xA000 - 1), ce qui est vraisemblable, bien qu'un peu arbitraire.

Note: - L'en-tête content-length est extrêmement important. - S'il est présent et non nul, le conteneur considère que la requête - possède un corps (une requête POST, par exemple), et lit - immédiatement le paquet suivant dans le flux d'entrée pour extraire + L'en-tête content-length est extrêmement important. + S'il est présent et non nul, le conteneur considère que la requête + possède un corps (une requête POST, par exemple), et lit + immédiatement le paquet suivant dans le flux d'entrée pour extraire ce corps.
Attributs -

Les attributs préfixés par ? (par exemple +

Les attributs préfixés par ? (par exemple ?context) sont tous optionnels. Chacun d'eux est - représenté par un octet correspondant au type de l'attribut et par - sa valeur (chaîne ou entier). Ils peuvent être envoyés dans un ordre + représenté par un octet correspondant au type de l'attribut et par + sa valeur (chaîne ou entier). Ils peuvent être envoyés dans un ordre quelconque (bien que le code C les envoie dans l'ordre ci-dessous). - Un code de terminaison spécial est envoyé pour signaler la fin de la + Un code de terminaison spécial est envoyé pour signaler la fin de la liste des attributs optionnels. La liste des codes est la suivante :

- - @@ -525,39 +525,39 @@ attribute_value := (string)
InformationValeur codeType de valeurNote
?context0x01-Non implémenté +
?context0x01-Non implémenté actuellement
?servlet_path0x02-Non implémenté +
?servlet_path0x02-Non implémenté actuellement
?remote_user0x03String
are_done0xFF-request_terminator

context et servlet_path ne sont pas - définis actuellement par le code C, et la majorité du code Java - ignore complètement ce qui est envoyé par l'intermédiaire de ces - champs (il va même parfois s'interrompre si une chaîne est - envoyée après un de ces codes). Je ne sais pas si c'est une bogue ou - une fonctionnalité non implémentée, ou tout simplement du code - obsolète, mais en tout cas, il n'est pris en charge par aucune des - deux extrémités de la connexion.

+ définis actuellement par le code C, et la majorité du code Java + ignore complètement ce qui est envoyé par l'intermédiaire de ces + champs (il va même parfois s'interrompre si une chaîne est + envoyée après un de ces codes). Je ne sais pas si c'est une bogue ou + une fonctionnalité non implémentée, ou tout simplement du code + obsolète, mais en tout cas, il n'est pris en charge par aucune des + deux extrémités de la connexion.

remote_user et auth_type concernent probablement l'authentification au niveau HTTP, et contiennent le nom de l'utilisateur distant ainsi que le type d'authentification - utilisée pour établir son identité (à savoir Basic, Digest).

+ utilisée pour établir son identité (à savoir Basic, Digest).

query_string, ssl_cert, ssl_cipher et ssl_session contiennent les - éléments HTTP et HTTPS correspondants.

-

jvm_route est utilisé dans le cadre des sessions - persistantes, en associant une session utilisateur à une instance - Tomcat particulière en présence de plusieurs répartiteurs de + éléments HTTP et HTTPS correspondants.

+

jvm_route est utilisé dans le cadre des sessions + persistantes, en associant une session utilisateur à une instance + Tomcat particulière en présence de plusieurs répartiteurs de charge.

-

Au delà de cette liste de base, tout autre attribut - supplémentaire peut être envoyé via le code - req_attribute 0x0A. Une paire de chaînes - représentant le nom et la valeur de l'attribut est envoyée - immédiatement après chaque instance de ce code. Les variables - d'environnement sont transmises par cette méthode.

-

Enfin, lorsque tous les attributs ont été transmis, le - terminateur d'attributs, 0xFF, est envoyé. Ce dernier - indique à la fois la fin de la liste d'attributs et la fin du paquet - de la requête

+

Au delà de cette liste de base, tout autre attribut + supplémentaire peut être envoyé via le code + req_attribute 0x0A. Une paire de chaînes + représentant le nom et la valeur de l'attribut est envoyée + immédiatement après chaque instance de ce code. Les variables + d'environnement sont transmises par cette méthode.

+

Enfin, lorsque tous les attributs ont été transmis, le + terminateur d'attributs, 0xFF, est envoyé. Ce dernier + indique à la fois la fin de la liste d'attributs et la fin du paquet + de la requête

Structure du paquet de la -réponse +réponse

Pour les messages que le conteneur peut renvoyer au serveur.

@@ -576,8 +576,8 @@ AJP13_SEND_HEADERS :=
   response_headers *(res_header_name header_value)
 
 res_header_name :=
-    sc_res_header_name | (string)   [voir ci-dessous pour la manière
-    dont ceci est interprété]
+    sc_res_header_name | (string)   [voir ci-dessous pour la manière
+    dont ceci est interprété]
 
 sc_res_header_name := 0xA0 (byte)
 
@@ -592,19 +592,19 @@ AJP13_GET_BODY_CHUNK :=
   prefix_code       6
   requested_length  (integer)
     
-
Détails:
-
Envoi d'un tronçon de corps -

Le tronçon se compose essentiellement de données binaires et est - renvoyé directement au navigateur.

+
Détails:
+
Envoi d'un tronçon de corps +

Le tronçon se compose essentiellement de données binaires et est + renvoyé directement au navigateur.

-
Envoi des en-têtes -

Les code et message d'état correspondent aux code et message HTTP +

Envoi des en-têtes +

Les code et message d'état correspondent aux code et message HTTP habituels (par exemple 200 et OK). Les - noms d'en-têtes de réponses sont codés de la même façon que les noms - d'en-têtes de requêtes. Voir ci-dessus le codage des en-têtes pour - plus de détails à propos de la manière dont les codes se distinguent - des chaînes.
- Les codes des en-têtes courants sont ::

+ noms d'en-têtes de réponses sont codés de la même façon que les noms + d'en-têtes de requêtes. Voir ci-dessus le codage des en-têtes pour + plus de détails à propos de la manière dont les codes se distinguent + des chaînes.
+ Les codes des en-têtes courants sont ::

@@ -619,30 +619,30 @@ AJP13_GET_BODY_CHUNK :=
NomValeur code
Content-Type0xA001
Status0xA00A
WWW-Authenticate0xA00B
-

La valeur de l'en-tête est codée immédiatement après le code ou - la chaîne du nom d'en-tête.

+

La valeur de l'en-tête est codée immédiatement après le code ou + la chaîne du nom d'en-tête.

-
Fin de la réponse -

Signale la fin de ce cycle de traitement de requête. Si le - drapeau reuse est à true (toute valeur autre que +

Fin de la réponse +

Signale la fin de ce cycle de traitement de requête. Si le + drapeau reuse est à true (toute valeur autre que 0 en langage C pur), cette - connexion TCP peut être réutilisée pour traiter de nouvelles - requêtes entrantes. Si reuse est à false - (==0), la connexion sera fermée.

+ connexion TCP peut être réutilisée pour traiter de nouvelles + requêtes entrantes. Si reuse est à false + (==0), la connexion sera fermée.

-
Réception d'un tronçon de corps -

Le conteneur réclame la suite des données de la requête (dans le - cas où la taille du corps était trop importante pour pouvoir être - contenue dans le premier paquet envoyé, où lorsque la requête est - fractionnée). Le serveur va alors envoyer un paquet contenant une - quantité de données correspondant au minimum de la - request_length, la taille maximale de corps envoyée - (8186 (8 Koctets - 6)), et le nombre réel d'octets - restants à envoyer pour ce corps de requête.
- S'il ne reste plus de données à transmettre pour ce corps de requête - (c'est à dire si le conteneur de servlets tente de lire au delà de +

Réception d'un tronçon de corps +

Le conteneur réclame la suite des données de la requête (dans le + cas où la taille du corps était trop importante pour pouvoir être + contenue dans le premier paquet envoyé, où lorsque la requête est + fractionnée). Le serveur va alors envoyer un paquet contenant une + quantité de données correspondant au minimum de la + request_length, la taille maximale de corps envoyée + (8186 (8 Koctets - 6)), et le nombre réel d'octets + restants à envoyer pour ce corps de requête.
+ S'il ne reste plus de données à transmettre pour ce corps de requête + (c'est à dire si le conteneur de servlets tente de lire au delà de la fin du corps), le serveur va renvoyer un paquet vide - dont la charge utile est de longueur 0 et se présentant sous la + dont la charge utile est de longueur 0 et se présentant sous la forme (0x12,0x34,0x00,0x00).

-- GitLab From 91011c6de59bc2d994208366abab7ed9468f4ecb Mon Sep 17 00:00:00 2001 From: Lucien Gentis Date: Sun, 27 Nov 2016 13:46:15 +0000 Subject: [PATCH 013/224] Rebuild. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1771596 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/directives.html.fr | 1 + docs/manual/mod/quickreference.html.fr | 921 +++++++++++++------------ 2 files changed, 462 insertions(+), 460 deletions(-) diff --git a/docs/manual/mod/directives.html.fr b/docs/manual/mod/directives.html.fr index e302642865..1bb5c56fb1 100644 --- a/docs/manual/mod/directives.html.fr +++ b/docs/manual/mod/directives.html.fr @@ -287,6 +287,7 @@
  • Group
  • H2CopyFiles
  • H2Direct
  • +
  • H2EarlyHints
  • H2MaxSessionStreams
  • H2MaxWorkerIdleSeconds
  • H2MaxWorkers
  • diff --git a/docs/manual/mod/quickreference.html.fr b/docs/manual/mod/quickreference.html.fr index 66b5936a72..e99b6fafef 100644 --- a/docs/manual/mod/quickreference.html.fr +++ b/docs/manual/mod/quickreference.html.fr @@ -584,815 +584,816 @@ s'arr requtes H2CopyFiles on|off off svdhEDetermine file handling in responses H2Direct on|off on for h2c, off for +svEH2 Direct Protocol Switch -H2MaxSessionStreams n 100 svEMaximum number of active streams per HTTP/2 session. -H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. -H2MaxWorkers nsEMaximum number of worker threads to use per child process. -H2MinWorkers nsEMinimal number of worker threads to use per child process. -H2ModernTLSOnly on|off on svERequire HTTP/2 connections to be "modern TLS" only -H2Push on|off on svEH2 Server Push Switch -H2PushDiarySize n 256 svEH2 Server Push Diary Size -H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 svEH2 Server Push Priority -H2PushResource [add] path [critical]svdhEDeclares resources for early pushing to the client -H2SerializeHeaders on|off off svESerialize Request/Response Processing Switch -H2SessionExtraFiles nsvENumber of Extra File Handles -H2StreamMaxMemSize bytes 65536 svEMaximum amount of output data buffered per stream. -H2TLSCoolDownSecs seconds 1 svE- -H2TLSWarmUpSize amount 1048576 svE- -H2Upgrade on|off on for h2c, off for +svEH2 Upgrade Protocol Switch -H2WindowSize bytes 65535 svESize of Stream Window for upstream data. -Header [condition] add|append|echo|edit|edit*|merge|set|setifempty|unset|note +H2EarlyHints on|off off svEDetermine sending of 103 status codes +H2MaxSessionStreams n 100 svEMaximum number of active streams per HTTP/2 session. +H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. +H2MaxWorkers nsEMaximum number of worker threads to use per child process. +H2MinWorkers nsEMinimal number of worker threads to use per child process. +H2ModernTLSOnly on|off on svERequire HTTP/2 connections to be "modern TLS" only +H2Push on|off on svEH2 Server Push Switch +H2PushDiarySize n 256 svEH2 Server Push Diary Size +H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 svEH2 Server Push Priority +H2PushResource [add] path [critical]svdhEDeclares resources for early pushing to the client +H2SerializeHeaders on|off off svESerialize Request/Response Processing Switch +H2SessionExtraFiles nsvENumber of Extra File Handles +H2StreamMaxMemSize bytes 65536 svEMaximum amount of output data buffered per stream. +H2TLSCoolDownSecs seconds 1 svE- +H2TLSWarmUpSize amount 1048576 svE- +H2Upgrade on|off on for h2c, off for +svEH2 Upgrade Protocol Switch +H2WindowSize bytes 65535 svESize of Stream Window for upstream data. +Header [condition] add|append|echo|edit|edit*|merge|set|setifempty|unset|note en-tte [[expr=]valeur [remplacement] [early|env=[!]variable|expr=expression]] -svdhEConfigure les en-ttes d'une rponse HTTP -HeaderName nom fichiersvdhBNom du fichier qui sera insr au dbut de la page +svdhEConfigure les en-ttes d'une rponse HTTP +HeaderName nom fichiersvdhBNom du fichier qui sera insr au dbut de la page contenant l'index -HeartbeatAddress addr:portsXAdresse multicast laquelle envoyer les requtes +HeartbeatAddress addr:portsXAdresse multicast laquelle envoyer les requtes heartbeat -HeartbeatListenaddr:portsXAdresse multicast d'coute des requtes entrantes heartbeat -HeartbeatMaxServers nombre-de-serveurs 10 sXSpcifie le nombre maximal de serveurs qui pourront envoyer +HeartbeatListenaddr:portsXAdresse multicast d'coute des requtes entrantes heartbeat +HeartbeatMaxServers nombre-de-serveurs 10 sXSpcifie le nombre maximal de serveurs qui pourront envoyer des requtes heartbeat ce serveur. -HeartbeatStorage chemin fichier logs/hb.dat sXChemin vers le stockage des donnes heartbeat -HeartbeatStorage chemin-fichier logs/hb.dat sXIndique le chemin permettant de lire les donnes +HeartbeatStorage chemin fichier logs/hb.dat sXChemin vers le stockage des donnes heartbeat +HeartbeatStorage chemin-fichier logs/hb.dat sXIndique le chemin permettant de lire les donnes heartbeat -HostnameLookups On|Off|Double Off svdCActive la recherche DNS sur les adresses IP des +HostnameLookups On|Off|Double Off svdCActive la recherche DNS sur les adresses IP des clients -IdentityCheck On|Off Off svdEActive la journalisation de l'identit RFC 1413 de +IdentityCheck On|Off Off svdEActive la journalisation de l'identit RFC 1413 de l'utilisateur distant -IdentityCheckTimeout secondes 30 svdEDtermine le dlai d'attente pour les requtes +IdentityCheckTimeout secondes 30 svdEDtermine le dlai d'attente pour les requtes ident -<If expression> ... </If>svdhCContient des directives qui ne s'appliquent que si une +<If expression> ... </If>svdhCContient des directives qui ne s'appliquent que si une condition est satisfaite au cours du traitement d'une requte -<IfDefine [!]paramtre> ... - </IfDefine>svdhCContient des directives qui ne s'appliqueront que si un +<IfDefine [!]paramtre> ... + </IfDefine>svdhCContient des directives qui ne s'appliqueront que si un test retourne "vrai" au dmarrage du serveur -<IfModule [!]fichier module|identificateur -module> ... </IfModule>svdhCContient des directives qui ne s'appliquent qu'en fonction +<IfModule [!]fichier module|identificateur +module> ... </IfModule>svdhCContient des directives qui ne s'appliquent qu'en fonction de la prsence ou de l'absence d'un module spcifique -<IfVersion [[!]operator] version> ... -</IfVersion>svdhEcontains version dependent configuration -ImapBase map|referer|URL http://nom_serveur/ +svdhBValeur par dfaut de la directive base des +<IfVersion [[!]operator] version> ... +</IfVersion>svdhEcontains version dependent configuration +ImapBase map|referer|URL http://nom_serveur/ +svdhBValeur par dfaut de la directive base des fichiers imagemap -ImapDefault error|nocontent|map|referer|URL nocontent svdhBAction entreprendre par dfaut lorsqu'un fichier imagemap +ImapDefault error|nocontent|map|referer|URL nocontent svdhBAction entreprendre par dfaut lorsqu'un fichier imagemap est invoqu avec des coordonnes qui ne correspondent aucune cible -ImapMenu none|formatted|semiformatted|unformatted formatted svdhBAction entreprendre si aucune coordonne n'est fournie +ImapMenu none|formatted|semiformatted|unformatted formatted svdhBAction entreprendre si aucune coordonne n'est fournie lorsqu'on invoque un fichier imagemap -Include chemin-fichier|chemin-rpertoire|wildcardsvdCInclut d'autres fichiers de configuration dans un des +Include chemin-fichier|chemin-rpertoire|wildcardsvdCInclut d'autres fichiers de configuration dans un des fichiers de configuration du serveur -IncludeOptional -chemin-fichier|chemin-rpertoire|wildcardsvdCInclusion de fichiers dans le fichier de configuration -IndexHeadInsert "marque ..."svdhBInsre du texte dans la section HEAD de la page +IncludeOptional +chemin-fichier|chemin-rpertoire|wildcardsvdCInclusion de fichiers dans le fichier de configuration +IndexHeadInsert "marque ..."svdhBInsre du texte dans la section HEAD de la page d'index. -IndexIgnore fichier [fichier] ... "." svdhBAjouts la liste des fichiers cacher lors de l'affichage +IndexIgnore fichier [fichier] ... "." svdhBAjouts la liste des fichiers cacher lors de l'affichage de l'index d'un rpertoire -IndexIgnoreReset ON|OFFsvdhBVide la liste des fichiers cacher lors de l'affichage du +IndexIgnoreReset ON|OFFsvdhBVide la liste des fichiers cacher lors de l'affichage du contenu d'un rpertoire -IndexOptions [+|-]option [[+|-]option] -...svdhBDiverses options de configuration pour l'indexation d'un +IndexOptions [+|-]option [[+|-]option] +...svdhBDiverses options de configuration pour l'indexation d'un rpertoire -IndexOrderDefault Ascending|Descending -Name|Date|Size|Description Ascending Name svdhBDfinit l'ordre d'affichage par dfaut d'un index de +IndexOrderDefault Ascending|Descending +Name|Date|Size|Description Ascending Name svdhBDfinit l'ordre d'affichage par dfaut d'un index de rpertoire -IndexStyleSheet chemin-urlsvdhBAjoute une feuille de style CSS l'index du +IndexStyleSheet chemin-urlsvdhBAjoute une feuille de style CSS l'index du rpertoire -InputSed commande-seddhCommande sed excuter pour le filtrage des donnes d'une +InputSed commande-seddhCommande sed excuter pour le filtrage des donnes d'une requte (en gnral des donnes POST) -ISAPIAppendLogToErrors on|off off svdhBEnregistrement des requtes +ISAPIAppendLogToErrors on|off off svdhBEnregistrement des requtes HSE_APPEND_LOG_PARAMETER de la part des extensions ISAPI dans le journal des erreurs -ISAPIAppendLogToQuery on|off on svdhBEnregistre les requtes +ISAPIAppendLogToQuery on|off on svdhBEnregistre les requtes HSE_APPEND_LOG_PARAMETER de la part des extensions ISAPI dans la partie arguments de la requte -ISAPICacheFile chemin-fichier +ISAPICacheFile chemin-fichier [chemin-fichier] -...svBFichiers .dll ISAPI devant tre chargs au +...svBFichiers .dll ISAPI devant tre chargs au dmarrage -ISAPIFakeAsync on|off off svdhBEmulation du support des entres/sorties asynchrones pour +ISAPIFakeAsync on|off off svdhBEmulation du support des entres/sorties asynchrones pour les appels ISAPI -ISAPILogNotSupported on|off off svdhBJournalisation des demandes de fonctionnalits non +ISAPILogNotSupported on|off off svdhBJournalisation des demandes de fonctionnalits non supportes de la part des extensions ISAPI -ISAPIReadAheadBuffer taille 49152 svdhBTaille du tampon de lecture anticipe envoy aux extensions +ISAPIReadAheadBuffer taille 49152 svdhBTaille du tampon de lecture anticipe envoy aux extensions ISAPI -KeepAlive On|Off On svCActive les connexions HTTP persistantes -KeepAliveTimeout nombre[ms] 5 svCDure pendant laquelle le serveur va attendre une requte +KeepAlive On|Off On svCActive les connexions HTTP persistantes +KeepAliveTimeout nombre[ms] 5 svCDure pendant laquelle le serveur va attendre une requte avant de fermer une connexion persistante -KeptBodySize taille maximale en octets 0 dBConserve le corps de la requte concurrence de la taille +KeptBodySize taille maximale en octets 0 dBConserve le corps de la requte concurrence de la taille maximale spcifie, pour une utilisation ventuelle par des filtres comme mod_include. -LanguagePriority langage-MIME [langage-MIME] -...svdhBL'ordre de priorit des variantes de langages pour les +LanguagePriority langage-MIME [langage-MIME] +...svdhBL'ordre de priorit des variantes de langages pour les cas o le client n'a pas formul de prfrences -LDAPCacheEntries nombre 1024 sENombre maximum d'entres dans le cache LDAP +LDAPCacheEntries nombre 1024 sENombre maximum d'entres dans le cache LDAP primaire -LDAPCacheTTL secondes 600 sEDure pendant laquelle les entres du cache restent +LDAPCacheTTL secondes 600 sEDure pendant laquelle les entres du cache restent valides. -LDAPConnectionPoolTTL n -1 svEDsactive les connexions d'arrire-plan qui sont restes +LDAPConnectionPoolTTL n -1 svEDsactive les connexions d'arrire-plan qui sont restes inactives trop longtemps au sein du jeu de connexions. -LDAPConnectionTimeout secondessESpcifie le dlai d'attente en secondes de la socket de +LDAPConnectionTimeout secondessESpcifie le dlai d'attente en secondes de la socket de connexion -LDAPLibraryDebug 7sEActive le dbogage dans le SDK LDAP -LDAPOpCacheEntries nombre 1024 sENombre d'entres utilises pour mettre en cache les +LDAPLibraryDebug 7sEActive le dbogage dans le SDK LDAP +LDAPOpCacheEntries nombre 1024 sENombre d'entres utilises pour mettre en cache les oprations de comparaison LDAP -LDAPOpCacheTTL secondes 600 sEDure pendant laquelle les entres du cache d'oprations +LDAPOpCacheTTL secondes 600 sEDure pendant laquelle les entres du cache d'oprations restent valides -LDAPReferralHopLimit nombredhELe nombre maximum de redirections vers des serveurs +LDAPReferralHopLimit nombredhELe nombre maximum de redirections vers des serveurs alternatifs (referrals) avant l'abandon de la requte LDAP. -LDAPReferrals On|Off|default On dhEActive la redirection vers des serveurs alternatifs au +LDAPReferrals On|Off|default On dhEActive la redirection vers des serveurs alternatifs au cours des requtes vers le serveur LDAP. -LDAPRetries nombre d'essais 3 sEDfinit le nombre maximum de tentatives de connexions au +LDAPRetries nombre d'essais 3 sEDfinit le nombre maximum de tentatives de connexions au serveur LDAP. -LDAPRetryDelay secondes 0 sEDfinit le temps d'attente avant un autre essai de connexion au +LDAPRetryDelay secondes 0 sEDfinit le temps d'attente avant un autre essai de connexion au serveur LDAP. -LDAPSharedCacheFile chemin/fichiersEDfinit le fichier du cache en mmoire +LDAPSharedCacheFile chemin/fichiersEDfinit le fichier du cache en mmoire partage -LDAPSharedCacheSize octets 500000 sETaille en octets du cache en mmoire partage -LDAPTimeout secondes 60 sESpcifie le dlai d'attente pour les oprations de +LDAPSharedCacheSize octets 500000 sETaille en octets du cache en mmoire partage +LDAPTimeout secondes 60 sESpcifie le dlai d'attente pour les oprations de recherche et d'identification LDAP en secondes -LDAPTrustedClientCert type -chemin/nom-fichier/alias [mot de passe]svdhEDfinit le nom de fichier contenant un certificat client ou +LDAPTrustedClientCert type +chemin/nom-fichier/alias [mot de passe]svdhEDfinit le nom de fichier contenant un certificat client ou un alias renvoyant vers un certificat client spcifique une connexion. Tous les SDK LDAP ne supportent pas les certificats clients par connexion. -LDAPTrustedGlobalCert type -chemin/nom-fichier [mot de passe]sEDfinit le nom de fichier ou la base de donnes contenant +LDAPTrustedGlobalCert type +chemin/nom-fichier [mot de passe]sEDfinit le nom de fichier ou la base de donnes contenant les Autorits de Certification de confiance globales ou les certificats clients globaux -LDAPTrustedMode typesvESpcifie le mode (SSL ou TLS) utiliser lors de la +LDAPTrustedMode typesvESpcifie le mode (SSL ou TLS) utiliser lors de la connexion un serveur LDAP. -LDAPVerifyServerCert On|Off On sEForce la vrification du certificat du +LDAPVerifyServerCert On|Off On sEForce la vrification du certificat du serveur -<Limit mthode [mthode] ... > ... - </Limit>dhCLimite les contrles d'accs que la section contient +<Limit mthode [mthode] ... > ... + </Limit>dhCLimite les contrles d'accs que la section contient certaines mthodes HTTP -<LimitExcept mthode [mthode] ... > ... - </LimitExcept>dhCApplique les contrles d'accs toutes les mthodes HTTP, +<LimitExcept mthode [mthode] ... > ... + </LimitExcept>dhCApplique les contrles d'accs toutes les mthodes HTTP, sauf celles qui sont spcifies -LimitInternalRecursion nombre [nombre] 10 svCDtermine le nombre maximal de redirections internes et de +LimitInternalRecursion nombre [nombre] 10 svCDtermine le nombre maximal de redirections internes et de sous-requtes imbriques -LimitRequestBody octets 0 svdhClimite la taille maximale du corps de la requte HTTP +LimitRequestBody octets 0 svdhClimite la taille maximale du corps de la requte HTTP envoye par le client -LimitRequestFields nombre 100 svCLimite le nombre de champs d'en-tte autoriss dans une +LimitRequestFields nombre 100 svCLimite le nombre de champs d'en-tte autoriss dans une requte HTTP -LimitRequestFieldSize octets 8190 svCDdinit la taille maximale autorise d'un en-tte de +LimitRequestFieldSize octets 8190 svCDdinit la taille maximale autorise d'un en-tte de requte HTTP -LimitRequestLine octets 8190 svCDfinit la taille maximale d'une ligne de requte +LimitRequestLine octets 8190 svCDfinit la taille maximale d'une ligne de requte HTTP -LimitXMLRequestBody octets 1000000 svdhCDfinit la taille maximale du corps d'une requte au format +LimitXMLRequestBody octets 1000000 svdhCDfinit la taille maximale du corps d'une requte au format XML -Listen [adresse IP:]numro port -[protocole]sMLes adresses IP et ports sur lesquels le serveur coute -ListenBacklog backlogsMLongueur maximale de la liste d'attente des +Listen [adresse IP:]numro port +[protocole]sMLes adresses IP et ports sur lesquels le serveur coute +ListenBacklog backlogsMLongueur maximale de la liste d'attente des connexions -ListenCoresBucketsRatio ratio 0 (disabled) sMRapport entre le nombre de coeurs de processeur activs et +ListenCoresBucketsRatio ratio 0 (disabled) sMRapport entre le nombre de coeurs de processeur activs et le nombre de segments d'coute -LoadFile nom-fichier [nom-fichier] ...svELiaison du fichier objet ou de la bibliothque +LoadFile nom-fichier [nom-fichier] ...svELiaison du fichier objet ou de la bibliothque spcifi -LoadModule module nom-fichiersvELiaison avec le serveur du fichier objet ou de la +LoadModule module nom-fichiersvELiaison avec le serveur du fichier objet ou de la bibliothque spcifi, et ajout de ce dernier la liste des modules actifs -<Location - chemin URL|URL> ... </Location>svCN'applique les directives contenues qu'aux URLs +<Location + chemin URL|URL> ... </Location>svCN'applique les directives contenues qu'aux URLs spcifies -<LocationMatch - regex> ... </LocationMatch>svCN'applique les directives contenues qu'aux URLs +<LocationMatch + regex> ... </LocationMatch>svCN'applique les directives contenues qu'aux URLs correspondant une expression rationnelle -LogFormat format|alias -[alias] "%h %l %u %t \"%r\" +svBDcrit un format utilisable dans un fichier +LogFormat format|alias +[alias] "%h %l %u %t \"%r\" +svBDcrit un format utilisable dans un fichier journal -LogIOTrackTTFB ON|OFF OFF svdhEEnable tracking of time to first byte (TTFB) -LogLevel [module:]niveau +LogIOTrackTTFB ON|OFF OFF svdhEEnable tracking of time to first byte (TTFB) +LogLevel [module:]niveau [module:niveau] ... - warn svdCContrle la verbosit du journal des erreurs -LogMessage message + warn svdCContrle la verbosit du journal des erreurs +LogMessage message [hook=hook] [expr=expression] -dXEnregistre des messages personnaliss dans le journal des +dXEnregistre des messages personnaliss dans le journal des erreurs -LuaAuthzProvider provider_name /path/to/lua/script.lua function_namesXBranche une fonction fournisseur d'autorisation dans mod_authz_core +LuaAuthzProvider provider_name /path/to/lua/script.lua function_namesXBranche une fonction fournisseur d'autorisation dans mod_authz_core -LuaCodeCache stat|forever|never stat svdhXConfigure le cache de code compil. -LuaHookAccessChecker /chemin/vers/lua/script.lua hook_function_name [early|late]svdhXFournit un point d'entre pour la phase access_checker du +LuaCodeCache stat|forever|never stat svdhXConfigure le cache de code compil. +LuaHookAccessChecker /chemin/vers/lua/script.lua hook_function_name [early|late]svdhXFournit un point d'entre pour la phase access_checker du traitement de la requte -LuaHookAuthChecker /chemin/vers/lua/script.lua hook_function_name [early|late]svdhXFournit un point d'entre pour la phase auth_checker du +LuaHookAuthChecker /chemin/vers/lua/script.lua hook_function_name [early|late]svdhXFournit un point d'entre pour la phase auth_checker du traitement de la requte -LuaHookCheckUserID /chemin/vers/lua/script.lua hook_function_name [early|late]svdhXFournit un point d'entre pour la phase check_user_id du +LuaHookCheckUserID /chemin/vers/lua/script.lua hook_function_name [early|late]svdhXFournit un point d'entre pour la phase check_user_id du traitement de la requte -LuaHookFixups /chemin/vers/lua/script.lua hook_function_namesvdhXFournit un point d'entre pour la phase de correction du +LuaHookFixups /chemin/vers/lua/script.lua hook_function_namesvdhXFournit un point d'entre pour la phase de correction du traitement de la requte -LuaHookInsertFilter /chemin/vers/lua/script.lua hook_function_namesvdhXFournit un point d'entre pour la phase insert_filter du +LuaHookInsertFilter /chemin/vers/lua/script.lua hook_function_namesvdhXFournit un point d'entre pour la phase insert_filter du traitement de la requte -LuaHookLog /path/to/lua/script.lua log_function_namesvdhXPermet une insertion dans la phase de journalisation du +LuaHookLog /path/to/lua/script.lua log_function_namesvdhXPermet une insertion dans la phase de journalisation du traitement d'une requte -LuaHookMapToStorage /chemin/vers/lua/script.lua hook_function_namesvdhXFournit un point d'entre pour la phase map_to_storage du +LuaHookMapToStorage /chemin/vers/lua/script.lua hook_function_namesvdhXFournit un point d'entre pour la phase map_to_storage du traitement de la requte -LuaHookTranslateName /chemin/vers/lua/script.lua nom_fonction_hook [early|late]svXFournit un point d'entre la phase du nom de +LuaHookTranslateName /chemin/vers/lua/script.lua nom_fonction_hook [early|late]svXFournit un point d'entre la phase du nom de traduction du traitement de la requte -LuaHookTypeChecker /chemin/vers/lua/script.lua hook_function_namesvdhXFournit un point d'entre pour la phase type_checker du +LuaHookTypeChecker /chemin/vers/lua/script.lua hook_function_namesvdhXFournit un point d'entre pour la phase type_checker du traitement de la requte -LuaInherit none|parent-first|parent-last parent-first svdhXContrle la manire dont les sections de configuration +LuaInherit none|parent-first|parent-last parent-first svdhXContrle la manire dont les sections de configuration parentes sont fusionnes dans les enfants -LuaInputFilter filter_name /path/to/lua/script.lua function_namesXFournit une fonction Lua pour le filtrage en entre -LuaMapHandler modele-uri /chemin/vers/lua/script.lua -[nom-fonction]svdhXMet en correspondance un chemin avec un gestionnaire lua -LuaOutputFilter filter_name /path/to/lua/script.lua function_namesXFournit une fonction Lua pour le filtrage de contenu en +LuaInputFilter filter_name /path/to/lua/script.lua function_namesXFournit une fonction Lua pour le filtrage en entre +LuaMapHandler modele-uri /chemin/vers/lua/script.lua +[nom-fonction]svdhXMet en correspondance un chemin avec un gestionnaire lua +LuaOutputFilter filter_name /path/to/lua/script.lua function_namesXFournit une fonction Lua pour le filtrage de contenu en sortie -LuaPackageCPath /chemin/vers/include/?.soasvdhXAjoute un rpertoire au package.cpath de lua -LuaPackagePath /chemin/vers/include/?.luasvdhXAjoute un rpertoire au package.path de lua -LuaQuickHandler /path/to/script.lua hook_function_namesvdhXFournit un point d'entre pour la gestion rapide du +LuaPackageCPath /chemin/vers/include/?.soasvdhXAjoute un rpertoire au package.cpath de lua +LuaPackagePath /chemin/vers/include/?.luasvdhXAjoute un rpertoire au package.path de lua +LuaQuickHandler /path/to/script.lua hook_function_namesvdhXFournit un point d'entre pour la gestion rapide du traitement de la requte -LuaRoot /chemin/vers/un/rpertoiresvdhXSpcifie le chemin de base pour la rsolution des chemins +LuaRoot /chemin/vers/un/rpertoiresvdhXSpcifie le chemin de base pour la rsolution des chemins relatifs dans les directives de mod_lua -LuaScope once|request|conn|thread|server [min] [max] once svdhXUne valeur parmi once, request, conn, thread -- la valeur par dfaut est once - +LuaScope once|request|conn|thread|server [min] [max] once svdhXUne valeur parmi once, request, conn, thread -- la valeur par dfaut est once + <Macro nom [par1 .. parN]> -... </Macro>svdBDfinition d'une macro dans un fichier de configuration -MaxConnectionsPerChild number 0 sMLimite le nombre de connexions qu'un processus enfant va +... </Macro>svdBDfinition d'une macro dans un fichier de configuration +MaxConnectionsPerChild number 0 sMLimite le nombre de connexions qu'un processus enfant va traiter au cours de son fonctionnement -MaxKeepAliveRequests nombre 100 svCNombre de requtes permises pour une connexion +MaxKeepAliveRequests nombre 100 svCNombre de requtes permises pour une connexion persistante -MaxMemFree KOctets 2048 sMQuantit maximale de mmoire que l'allocateur principal est +MaxMemFree KOctets 2048 sMQuantit maximale de mmoire que l'allocateur principal est autoris conserver sans appeler free() -MaxRangeOverlaps default | unlimited | none | nombre de - chevauchements 20 svdCNombre de chevauchements de segments de donnes autoris +MaxRangeOverlaps default | unlimited | none | nombre de + chevauchements 20 svdCNombre de chevauchements de segments de donnes autoris (par exemple 100-200,150-300) avant le renvoi de la ressource complte -MaxRangeReversals default | unlimited | none | nombre - d'inversions 20 svdCNombre d'inversions d'ordre autoris dans la spcification des +MaxRangeReversals default | unlimited | none | nombre + d'inversions 20 svdCNombre d'inversions d'ordre autoris dans la spcification des segments de donnes (par exemple 100-200,50-70) avant le renvoi de la ressource complte -MaxRanges default | unlimited | none | nombre de segments 200 svdCNombre de segments de donnes autoris avant le renvoi de +MaxRanges default | unlimited | none | nombre de segments 200 svdCNombre de segments de donnes autoris avant le renvoi de l'intgralit de la ressource -MaxRequestWorkers nombresMNombre maximum de connexions pouvant tre traites +MaxRequestWorkers nombresMNombre maximum de connexions pouvant tre traites simultanment -MaxSpareServers nombre 10 sMNombre maximum de processus serveurs enfants +MaxSpareServers nombre 10 sMNombre maximum de processus serveurs enfants inactifs -MaxSpareThreads nombresMNombre maximum de threads inactifs -MaxThreads nombre 2048 sMDfinit le nombre maximum de threads esclaves -MemcacheConnTTL num[units] 15s svEDure de conservation des connexions inactives -MergeTrailers [on|off] off svCDtermine si les donnes supplmentaires (trailers) sont +MaxSpareThreads nombresMNombre maximum de threads inactifs +MaxThreads nombre 2048 sMDfinit le nombre maximum de threads esclaves +MemcacheConnTTL num[units] 15s svEDure de conservation des connexions inactives +MergeTrailers [on|off] off svCDtermine si les donnes supplmentaires (trailers) sont fusionnes avec les en-ttes -MetaDir rpertoire .web svdhELe nom du rpertoire o trouver les fichiers de +MetaDir rpertoire .web svdhELe nom du rpertoire o trouver les fichiers de mtainformations dans le style du CERN -MetaFiles on|off off svdhEActive le traitement des mtafichiers du CERN -MetaSuffix suffixe .meta svdhESuffixe du fichier contenant les mtainformations dans le +MetaFiles on|off off svdhEActive le traitement des mtafichiers du CERN +MetaSuffix suffixe .meta svdhESuffixe du fichier contenant les mtainformations dans le style du CERN -MimeMagicFile chemin-fichiersvEActive la dtermination du type MIME en se basant sur le +MimeMagicFile chemin-fichiersvEActive la dtermination du type MIME en se basant sur le contenu du fichier et en utilisant le fichier magique spcifi -MinSpareServers nombre 5 sMNombre minimum de processus serveurs enfants +MinSpareServers nombre 5 sMNombre minimum de processus serveurs enfants inactifs -MinSpareThreads nombresMNombre minimum de threads inactifs qui seront disponibles +MinSpareThreads nombresMNombre minimum de threads inactifs qui seront disponibles pour pouvoir traiter les pics de requtes -MMapFile chemin fichier [chemin fichier] ...sXCharge au dmarrage une liste de fichiers en mmoire -ModemStandard V.21|V.26bis|V.32|V.34|V.92dXStandard de modem simuler -ModMimeUsePathInfo On|Off Off dBIndique mod_mime de traiter les lments +MMapFile chemin fichier [chemin fichier] ...sXCharge au dmarrage une liste de fichiers en mmoire +ModemStandard V.21|V.26bis|V.32|V.34|V.92dXStandard de modem simuler +ModMimeUsePathInfo On|Off Off dBIndique mod_mime de traiter les lments de path_info en tant que parties du nom de fichier -MultiviewsMatch Any|NegotiatedOnly|Filters|Handlers -[Handlers|Filters] NegotiatedOnly svdhBLes types de fichiers qui seront inclus lors d'une +MultiviewsMatch Any|NegotiatedOnly|Filters|Handlers +[Handlers|Filters] NegotiatedOnly svdhBLes types de fichiers qui seront inclus lors d'une recherche de correspondance de fichier avec les vues multiples (MultiViews) -Mutex mcanisme [default|nom-mutex] ... [OmitPID] default sCDfinit les mcanismes de mutex et le repertoire du fichier +Mutex mcanisme [default|nom-mutex] ... [OmitPID] default sCDfinit les mcanismes de mutex et le repertoire du fichier verrou pour tous les mutex ou seulement les mutex spcifis -NameVirtualHost adresse[:port]sCOBSOLETE : Dfinit une adresse IP pour les serveurs virtuels base de +NameVirtualHost adresse[:port]sCOBSOLETE : Dfinit une adresse IP pour les serveurs virtuels base de nom -NoProxy domaine [domaine] ...svEServeurs, domaines ou rseaux auquels on se connectera +NoProxy domaine [domaine] ...svEServeurs, domaines ou rseaux auquels on se connectera directement -NWSSLTrustedCerts nom-fichier -[nom-fichier] ...sBListe de certificats clients supplmentaires -NWSSLUpgradeable [adresse-IP:]num-portsBPermet de promouvoir une connexion non SSL au statut de +NWSSLTrustedCerts nom-fichier +[nom-fichier] ...sBListe de certificats clients supplmentaires +NWSSLUpgradeable [adresse-IP:]num-portsBPermet de promouvoir une connexion non SSL au statut de connexion SSL la demande -Options - [+|-]option [[+|-]option] ... FollowSymlinks svdhCDfinit les fonctionnalits disponibles pour un rpertoire +Options + [+|-]option [[+|-]option] ... FollowSymlinks svdhCDfinit les fonctionnalits disponibles pour un rpertoire particulier - Order ordre Deny,Allow dhEDfinit le statut d'accs par dfaut et l'ordre dans lequel + Order ordre Deny,Allow dhEDfinit le statut d'accs par dfaut et l'ordre dans lequel les directives Allow et Deny sont values. -OutputSed commande-seddhCommande sed pour le filtrage des contenus de type +OutputSed commande-seddhCommande sed pour le filtrage des contenus de type rponse -PassEnv var-env [var-env] -...svdhBTransmet des variables d'environnement depuis le +PassEnv var-env [var-env] +...svdhBTransmet des variables d'environnement depuis le shell -PidFile nom fichier logs/httpd.pid sMFicher dans lequel le serveur enregistre l'identificateur +PidFile nom fichier logs/httpd.pid sMFicher dans lequel le serveur enregistre l'identificateur de processus du dmon -PrivilegesMode FAST|SECURE|SELECTIVE FAST svdXFait un compromis entre d'une part l'efficacit et la +PrivilegesMode FAST|SECURE|SELECTIVE FAST svdXFait un compromis entre d'une part l'efficacit et la vitesse de traitement et d'autre part la scurit l'encontre des codes malicieux supportant les privilges. -Protocol protocolesvCProtocole pour une socket d'coute -ProtocolEcho On|Off Off svXActive ou dsactive le serveur d'cho -Protocols protocole ... http/1.1 svCProtocoles disponibles pour un serveur virtuel ou non -ProtocolsHonorOrder On|Off On svCDtermine qui du client ou du serveur dtermine l'ordre +Protocol protocolesvCProtocole pour une socket d'coute +ProtocolEcho On|Off Off svXActive ou dsactive le serveur d'cho +Protocols protocole ... http/1.1 svCProtocoles disponibles pour un serveur virtuel ou non +ProtocolsHonorOrder On|Off On svCDtermine qui du client ou du serveur dtermine l'ordre des protocoles au cours de la ngociation de la connexion -<Proxy url-avec-jokers> ...</Proxy>svEConteneur de directives s'appliquant des ressources +<Proxy url-avec-jokers> ...</Proxy>svEConteneur de directives s'appliquant des ressources mandates -ProxyAddHeaders Off|On On svdEAjoute des informations propos du mandataire aux +ProxyAddHeaders Off|On On svdEAjoute des informations propos du mandataire aux en-ttes X-Forwarded-* -ProxyBadHeader IsError|Ignore|StartBody IsError svEDtermine la manire de traiter les lignes d'en-tte +ProxyBadHeader IsError|Ignore|StartBody IsError svEDtermine la manire de traiter les lignes d'en-tte incorrectes d'une rponse -ProxyBlock *|terme|serveur|domaine -[terme|serveur|domaine] ...svETermes, serveurs ou domaines bloqus par le +ProxyBlock *|terme|serveur|domaine +[terme|serveur|domaine] ...svETermes, serveurs ou domaines bloqus par le mandataire -ProxyDomain DomainesvENom de domaine par dfaut pour les requtes +ProxyDomain DomainesvENom de domaine par dfaut pour les requtes mandates -ProxyErrorOverride On|Off Off svdEOutrepasser les pages d'erreur pour les contenus +ProxyErrorOverride On|Off Off svdEOutrepasser les pages d'erreur pour les contenus mandats -ProxyExpressDBMFile <chemin>svEChemin du fichier DBM. -ProxyExpressDBMFile <type>svEType de fichier DBM. -ProxyExpressEnable [on|off]svEActive la fonctionnalit du module. -ProxyFtpDirCharset jeu-caractres ISO-8859-1 svdEDfinit le jeu de caractres des listings FTP +ProxyExpressDBMFile <chemin>svEChemin du fichier DBM. +ProxyExpressDBMFile <type>svEType de fichier DBM. +ProxyExpressEnable [on|off]svEActive la fonctionnalit du module. +ProxyFtpDirCharset jeu-caractres ISO-8859-1 svdEDfinit le jeu de caractres des listings FTP mandats -ProxyFtpEscapeWildcards [on|off]svdELes caractres gnriques dans les noms de fichiers +ProxyFtpEscapeWildcards [on|off]svdELes caractres gnriques dans les noms de fichiers doivent-ils tre chapps lorsqu'ils sont envoys au serveur FTP ? -ProxyFtpListOnWildcard [on|off]svdELes caractres gnriques dans les noms de fichiers +ProxyFtpListOnWildcard [on|off]svdELes caractres gnriques dans les noms de fichiers demands doivent-ils dclencher l'affichage d'un listing ? -ProxyHCExpr name {ap_expr expression}svECreates a named condition expression to use to determine health of the backend based on its response. -ProxyHCTemplate name parameter=setting <...>svECreates a named template for setting various health check parameters -ProxyHCTPsize <size>svESets the size of the threadpool used for the health check workers. -ProxyHTMLBufSize nb-octetssvdBDfinit l'incrment de la taille du tampon, ainsi que sa +ProxyHCExpr name {ap_expr expression}svECreates a named condition expression to use to determine health of the backend based on its response. +ProxyHCTemplate name parameter=setting <...>svECreates a named template for setting various health check parameters +ProxyHCTPsize <size>svESets the size of the threadpool used for the health check workers. +ProxyHTMLBufSize nb-octetssvdBDfinit l'incrment de la taille du tampon, ainsi que sa taille initiale, pour la mise en tampon des scripts en ligne et des feuilles de style. -ProxyHTMLCharsetOut jeu-de-caractres | *svdBSpcifie un jeu de caractres pour la sortie de +ProxyHTMLCharsetOut jeu-de-caractres | *svdBSpcifie un jeu de caractres pour la sortie de mod_proxy_html. -ProxyHTMLDocType HTML|XHTML [Legacy]
    OU -
    ProxyHTMLDocType fpi [SGML|XML]
    svdBDfinit une dclaration de type de document HTML ou XHTML. -ProxyHTMLEnable On|Off Off svdBPermet d'activer/dsactiver le filtre proxy_html. -ProxyHTMLEvents attribut [attribut ...]svdBSpcifie les attributs traiter comme des vnements de +ProxyHTMLDocType HTML|XHTML [Legacy]
    OU +
    ProxyHTMLDocType fpi [SGML|XML]
    svdBDfinit une dclaration de type de document HTML ou XHTML. +ProxyHTMLEnable On|Off Off svdBPermet d'activer/dsactiver le filtre proxy_html. +ProxyHTMLEvents attribut [attribut ...]svdBSpcifie les attributs traiter comme des vnements de type scripting. -ProxyHTMLExtended On|Off Off svdBDtermine si l'on doit corriger les liens dans les scripts +ProxyHTMLExtended On|Off Off svdBDtermine si l'on doit corriger les liens dans les scripts en ligne, les feuilles de style et les vnements de type scripting. -ProxyHTMLFixups [lowercase] [dospath] [reset]svdBCorrige les erreurs HTML simples. -ProxyHTMLInterp On|Off Off svdBActive la rinterprtation des rgles +ProxyHTMLFixups [lowercase] [dospath] [reset]svdBCorrige les erreurs HTML simples. +ProxyHTMLInterp On|Off Off svdBActive la rinterprtation des rgles ProxyHTMLURLMap pour chaque requte. -ProxyHTMLLinks lment attribut [attribut2 ...]svdBSpcifie les lments HTML dont les attributs d'URL doivent +ProxyHTMLLinks lment attribut [attribut2 ...]svdBSpcifie les lments HTML dont les attributs d'URL doivent tre rcrits. -ProxyHTMLMeta On|Off Off svdBActive ou dsactive une printerprtation supplmentaire +ProxyHTMLMeta On|Off Off svdBActive ou dsactive une printerprtation supplmentaire des mtadonnes dans les sections HTML <head>. -ProxyHTMLStripComments On|Off Off svdBDtermine si les commentaires HTML doivent tre supprims. -ProxyHTMLURLMap modle-source modle-cible [drapeaux] [cond]svdBDfinit une rgle de rcriture des liens HTML -ProxyIOBufferSize octets 8192 svEDtermine la taille du tampon interne de transfert de +ProxyHTMLStripComments On|Off Off svdBDtermine si les commentaires HTML doivent tre supprims. +ProxyHTMLURLMap modle-source modle-cible [drapeaux] [cond]svdBDfinit une rgle de rcriture des liens HTML +ProxyIOBufferSize octets 8192 svEDtermine la taille du tampon interne de transfert de donnes -<ProxyMatch regex> ...</ProxyMatch>svEConteneur de directives s'appliquant des ressources +<ProxyMatch regex> ...</ProxyMatch>svEConteneur de directives s'appliquant des ressources mandates correspondant une expression rationnelle -ProxyMaxForwards nombre -1 svENombre maximum de mandataires travers lesquelles une +ProxyMaxForwards nombre -1 svENombre maximum de mandataires travers lesquelles une requte peut tre redirige -ProxyPass [chemin] !|url [cl=valeur - [cl=valeur ...]] [nocanon] [interpolate] [noquery]svdERfrencer des serveurs distants depuis +ProxyPass [chemin] !|url [cl=valeur + [cl=valeur ...]] [nocanon] [interpolate] [noquery]svdERfrencer des serveurs distants depuis l'espace d'URLs du serveur local -ProxyPassInherit On|Off On svEHritage des directives ProxyPass dfinies au niveau du +ProxyPassInherit On|Off On svEHritage des directives ProxyPass dfinies au niveau du serveur principal -ProxyPassInterpolateEnv On|Off Off svdEActive l'interpolation des variables d'environnement dans +ProxyPassInterpolateEnv On|Off Off svdEActive l'interpolation des variables d'environnement dans les configurations de mandataires inverses -ProxyPassMatch [regex] !|url +ProxyPassMatch [regex] !|url [cl=valeur - [cl=valeur ...]]svdEFait correspondre des serveurs distants dans l'espace d'URL + [cl=valeur ...]]svdEFait correspondre des serveurs distants dans l'espace d'URL du serveur local en utilisant des expressions rationnelles -ProxyPassReverse [chemin] url -[interpolate]svdEAjuste l'URL dans les en-ttes de la rponse HTTP envoye +ProxyPassReverse [chemin] url +[interpolate]svdEAjuste l'URL dans les en-ttes de la rponse HTTP envoye par un serveur mandat en inverse -ProxyPassReverseCookieDomain domaine-interne -domaine-public [interpolate]svdEAjuste la chane correspondant au domaine dans les en-ttes +ProxyPassReverseCookieDomain domaine-interne +domaine-public [interpolate]svdEAjuste la chane correspondant au domaine dans les en-ttes Set-Cookie en provenance d'un serveur mandat -ProxyPassReverseCookiePath chemin-interne -chemin-public [interpolate]svdEAjuste la chane correspondant au chemin dans les en-ttes +ProxyPassReverseCookiePath chemin-interne +chemin-public [interpolate]svdEAjuste la chane correspondant au chemin dans les en-ttes Set-Cookie en provenance d'un serveur mandat -ProxyPreserveHost On|Off Off svdEUtilise l'en-tte de requte entrante Host pour la requte +ProxyPreserveHost On|Off Off svdEUtilise l'en-tte de requte entrante Host pour la requte du mandataire -ProxyReceiveBufferSize octets 0 svETaille du tampon rseau pour les connexions mandates HTTP +ProxyReceiveBufferSize octets 0 svETaille du tampon rseau pour les connexions mandates HTTP et FTP -ProxyRemote comparaison serveur-distantsvEMandataire distant utiliser pour traiter certaines +ProxyRemote comparaison serveur-distantsvEMandataire distant utiliser pour traiter certaines requtes -ProxyRemoteMatch regex serveur-distantsvELe mandataire distant utiliser pour traiter les requtes +ProxyRemoteMatch regex serveur-distantsvELe mandataire distant utiliser pour traiter les requtes correspondant une expression rationnelle -ProxyRequests On|Off Off svEActive la fonctionnalit (standard) de mandataire +ProxyRequests On|Off Off svEActive la fonctionnalit (standard) de mandataire direct -ProxySCGIInternalRedirect On|Off|Headername On svdEActive ou dsactive les rponses de redirection interne en +ProxySCGIInternalRedirect On|Off|Headername On svdEActive ou dsactive les rponses de redirection interne en provenance du serveur cible. -ProxySCGISendfile On|Off|nom-en-tte Off svdEActive l'valuation du pseudo en-tte de rponse +ProxySCGISendfile On|Off|nom-en-tte Off svdEActive l'valuation du pseudo en-tte de rponse X-Sendfile -ProxySet url cl=valeur [cl=valeur ...]dEDfinit diffrents paramtres relatifs la rpartition de +ProxySet url cl=valeur [cl=valeur ...]dEDfinit diffrents paramtres relatifs la rpartition de charge des mandataires et aux membres des groupes de rpartition de charge -ProxySourceAddress adressesvEDfinit l'adresse IP locale pour les connexions mandates +ProxySourceAddress adressesvEDfinit l'adresse IP locale pour les connexions mandates sortantes -ProxyStatus Off|On|Full Off svEAffiche l'tat du rpartiteur de charge du mandataire dans +ProxyStatus Off|On|Full Off svEAffiche l'tat du rpartiteur de charge du mandataire dans mod_status -ProxyTimeout secondessvEDlai d'attente rseau pour les requtes +ProxyTimeout secondessvEDlai d'attente rseau pour les requtes mandates -ProxyVia On|Off|Full|Block Off svEInformation fournie dans l'en-tte de rponse HTTP +ProxyVia On|Off|Full|Block Off svEInformation fournie dans l'en-tte de rponse HTTP Via pour les requtes mandates -QualifyRedirectURL ON|OFF OFF svdCVrifie si la variable d'environnement REDIRECT_URL est +QualifyRedirectURL ON|OFF OFF svdCVrifie si la variable d'environnement REDIRECT_URL est pleinement qualifie -ReadmeName nom-fichiersvdhBNom du fichier dont le contenu sera insr la fin de +ReadmeName nom-fichiersvdhBNom du fichier dont le contenu sera insr la fin de l'index -ReceiveBufferSize octets 0 sMTaille du tampon TCP en entre -Redirect [tat] [URL-path] -URLsvdhBEnvoie une redirection externe demandant au client +ReceiveBufferSize octets 0 sMTaille du tampon TCP en entre +Redirect [tat] [URL-path] +URLsvdhBEnvoie une redirection externe demandant au client d'effectuer une autre requte avec une URL diffrente -RedirectMatch [tat] regex -URLsvdhBEnvoie une redirection externe faisant appel aux +RedirectMatch [tat] regex +URLsvdhBEnvoie une redirection externe faisant appel aux expressions rationnelles pour la mise en correspondance de l'URL courante -RedirectPermanent chemin URL URLsvdhBEnvoie une redirection externe permanente demandant au +RedirectPermanent chemin URL URLsvdhBEnvoie une redirection externe permanente demandant au client d'effectuer une nouvelle requte avec une URL diffrente -RedirectTemp chemin URL URLsvdhBEnvoie une redirection externe temporaire demandant au +RedirectTemp chemin URL URLsvdhBEnvoie une redirection externe temporaire demandant au client d'effectuer une nouvelle requte avec une URL diffrente -ReflectorHeader en-tte-entre [en-tte-sortie]svdhBRflchit un en-tte d'entre dans les en-ttes de sortie -RemoteIPHeader en-ttesvBDfinit le champ d'en-tte qui contiendra les adresses IP +ReflectorHeader en-tte-entre [en-tte-sortie]svdhBRflchit un en-tte d'entre dans les en-ttes de sortie +RemoteIPHeader en-ttesvBDfinit le champ d'en-tte qui contiendra les adresses IP du client -RemoteIPInternalProxy -ip-mandataire|ip-mandataire/sous-rseau|nom-hte ...svBDclare les adresses IP intranet clients comme dignes de +RemoteIPInternalProxy +ip-mandataire|ip-mandataire/sous-rseau|nom-hte ...svBDclare les adresses IP intranet clients comme dignes de confiance pour prsenter la valeur RemoteIPHeader -RemoteIPInternalProxyList nom-fichiersvBDclare les adresses IP intranet clients comme dignes de +RemoteIPInternalProxyList nom-fichiersvBDclare les adresses IP intranet clients comme dignes de confiance pour prsenter la valeur RemoteIPHeader -RemoteIPProxiesHeader Nom_en-ttesvBDclare le champ d'en-tte qui contiendra toutes les +RemoteIPProxiesHeader Nom_en-ttesvBDclare le champ d'en-tte qui contiendra toutes les adresses IP intermdiaires -RemoteIPTrustedProxy -ip-mandataire|ip-mandataire/sous-rseau|nom-hte ...svBDclare les adresses IP clientes de l'intranet dignes de +RemoteIPTrustedProxy +ip-mandataire|ip-mandataire/sous-rseau|nom-hte ...svBDclare les adresses IP clientes de l'intranet dignes de confiance pour prsenter la valeur RemoteIPHeader -RemoteIPTrustedProxyList nom-fichiersvBDclare les adresses IP intranet clients comme dignes de +RemoteIPTrustedProxyList nom-fichiersvBDclare les adresses IP intranet clients comme dignes de confiance pour prsenter la valeur RemoteIPHeader -RemoveCharset extension [extension] -...vdhBSupprime toute association de jeu de caractres pour un +RemoveCharset extension [extension] +...vdhBSupprime toute association de jeu de caractres pour un ensemble d'extensions de noms de fichiers -RemoveEncoding extension [extension] -...vdhBSupprime toute association de codage de contenu pour un +RemoveEncoding extension [extension] +...vdhBSupprime toute association de codage de contenu pour un ensemble d'extensions de noms de fichiers -RemoveHandler extension [extension] -...vdhBSupprime toute association de gestionnaire un ensemble +RemoveHandler extension [extension] +...vdhBSupprime toute association de gestionnaire un ensemble d'extensions de noms de fichiers -RemoveInputFilter extension [extension] -...vdhBSupprime toute association de filtre en entre un +RemoveInputFilter extension [extension] +...vdhBSupprime toute association de filtre en entre un ensemble d'extensions de noms de fichiers -RemoveLanguage extension [extension] -...vdhBSupprime toute association de langue un ensemble +RemoveLanguage extension [extension] +...vdhBSupprime toute association de langue un ensemble d'extensions de noms de fichiers -RemoveOutputFilter extension [extension] -...vdhBSupprime toute association de filtre en sortie un +RemoveOutputFilter extension [extension] +...vdhBSupprime toute association de filtre en sortie un ensemble d'extensions de noms de fichiers -RemoveType extension [extension] -...vdhBSupprime toute association de type de contenu un ensemble +RemoveType extension [extension] +...vdhBSupprime toute association de type de contenu un ensemble d'extensions de noms de fichiers -RequestHeader add|append|edit|edit*|merge|set|setifempty|unset +RequestHeader add|append|edit|edit*|merge|set|setifempty|unset en-tte [[expr=]valeur [remplacement] [early|env=[!]variable|expr=expression]] -svdhEConfigure les en-ttes d'une requte HTTP -RequestReadTimeout +svdhEConfigure les en-ttes d'une requte HTTP +RequestReadTimeout [header=dlai[-dlai-maxi][,MinRate=taux-mini] [body=dlai[-dlai-maxi][,MinRate=taux-mini] -svEDfinit des dlais maximums pour la rception des en-ttes +svEDfinit des dlais maximums pour la rception des en-ttes et corps des requtes en provenance du client. -Require [not] nom-entit [nom-entit] -...dhBVrifie si un utilisateur authentifi a une +Require [not] nom-entit [nom-entit] +...dhBVrifie si un utilisateur authentifi a une autorisation d'accs accorde par un fournisseur d'autorisation. -<RequireAll> ... </RequireAll>dhBRegroupe plusieurs directives d'autorisation dont aucune ne +<RequireAll> ... </RequireAll>dhBRegroupe plusieurs directives d'autorisation dont aucune ne doit chouer et dont au moins une doit retourner un rsultat positif pour que la directive globale retourne elle-mme un rsultat positif. -<RequireAny> ... </RequireAny>dhBRegroupe des directives d'autorisation dont au moins une +<RequireAny> ... </RequireAny>dhBRegroupe des directives d'autorisation dont au moins une doit retourner un rsultat positif pour que la directive globale retourne elle-mme un rsultat positif. -<RequireNone> ... </RequireNone>dhBRegroupe des directives d'autorisation dont aucune ne doit +<RequireNone> ... </RequireNone>dhBRegroupe des directives d'autorisation dont aucune ne doit retourner un rsultat positif pour que la directive globale n'choue pas. -RewriteBase chemin_URLdhEDfinit l'URL de base pour les rcritures au niveau +RewriteBase chemin_URLdhEDfinit l'URL de base pour les rcritures au niveau rpertoire - RewriteCond - chane_de_test expression_de_comparaison [drapeaux]svdhEDfinit une condition qui devra tre satisfaite pour que + RewriteCond + chane_de_test expression_de_comparaison [drapeaux]svdhEDfinit une condition qui devra tre satisfaite pour que la rcriture soit effectue -RewriteEngine on|off off svdhEActive ou dsactive l'excution du +RewriteEngine on|off off svdhEActive ou dsactive l'excution du moteur de rcriture -RewriteMap MapName MapType:MapSource -svEDfinit une fonction de mise en correspondance pour la +RewriteMap MapName MapType:MapSource +svEDfinit une fonction de mise en correspondance pour la recherche de mots-cls -RewriteOptions OptionssvdhEConfigure certaines options spciales +RewriteOptions OptionssvdhEConfigure certaines options spciales pour le moteur de rcriture -RewriteRule - Modle Substitution [drapeaux]svdhEDfinit les rgles pour le moteur de rcriture -RLimitCPU secondes|max [secondes|max]svdhCLimite le temps CPU allou aux processus initis par les +RewriteRule + Modle Substitution [drapeaux]svdhEDfinit les rgles pour le moteur de rcriture +RLimitCPU secondes|max [secondes|max]svdhCLimite le temps CPU allou aux processus initis par les processus enfants d'Apache httpd -RLimitMEM octets|max [octets|max]svdhCLimite la mmoire alloue aux processus initis par les +RLimitMEM octets|max [octets|max]svdhCLimite la mmoire alloue aux processus initis par les processus enfants d'Apache httpd -RLimitNPROC nombre|max [nombre|max]svdhCLimite le nombre de processus qui peuvent tre initis par +RLimitNPROC nombre|max [nombre|max]svdhCLimite le nombre de processus qui peuvent tre initis par les processus initis par les processus enfants d'Apache httpd -Satisfy Any|All All dhEInteraction entre le contrle d'accs en fonction de l'hte +Satisfy Any|All All dhEInteraction entre le contrle d'accs en fonction de l'hte et l'authentification utilisateur -ScoreBoardFile chemin fichier logs/apache_runtime +sMChemin du fichier o sont stockes les donnes concernant +ScoreBoardFile chemin fichier logs/apache_runtime +sMChemin du fichier o sont stockes les donnes concernant la coordination des processus enfants -Script mthode script cgisvdBActive un script CGI dans le cas d'une mthode de requte +Script mthode script cgisvdBActive un script CGI dans le cas d'une mthode de requte particulire. -ScriptAlias [chemin URL] -chemin fichier|chemin rpertoiresvdBFait correspondre une URL une zone du systme de fichiers +ScriptAlias [chemin URL] +chemin fichier|chemin rpertoiresvdBFait correspondre une URL une zone du systme de fichiers et dsigne la cible comme script CGI -ScriptAliasMatch regex -chemin fichier|chemin rpertoiresvBFait correspondre une URL une zone du systme de fichiers +ScriptAliasMatch regex +chemin fichier|chemin rpertoiresvBFait correspondre une URL une zone du systme de fichiers en faisant appel aux expressions rationnelles et en dsignant la cible comme un script CGI -ScriptInterpreterSource Registry|Registry-Strict|Script Script svdhCPermet de localiser l'interprteur des scripts +ScriptInterpreterSource Registry|Registry-Strict|Script Script svdhCPermet de localiser l'interprteur des scripts CGI -ScriptLog chemin fichiersvBChemin du fichier journal des erreurs du script +ScriptLog chemin fichiersvBChemin du fichier journal des erreurs du script CGI -ScriptLogBuffer octets 1024 svBTaille maximale des requtes PUT ou POST qui seront +ScriptLogBuffer octets 1024 svBTaille maximale des requtes PUT ou POST qui seront enregistres dans le journal du script -ScriptLogLength octets 10385760 svBTaille maximale du fichier journal des scripts +ScriptLogLength octets 10385760 svBTaille maximale du fichier journal des scripts CGI -ScriptSock chemin fichier cgisock sBLe prfixe du nom de fichier du socket utiliser pour +ScriptSock chemin fichier cgisock sBLe prfixe du nom de fichier du socket utiliser pour communiquer avec le dmon CGI -SecureListen [adresse-IP:]num-port -nom-certificat [MUTUAL]sBActive le chiffrement SSL pour le port +SecureListen [adresse-IP:]num-port +nom-certificat [MUTUAL]sBActive le chiffrement SSL pour le port spcifi -SeeRequestTail On|Off Off sCDtermine si mod_status affiche les 63 premiers caractres +SeeRequestTail On|Off Off sCDtermine si mod_status affiche les 63 premiers caractres d'une requte ou les 63 derniers, en supposant que la requte elle-mme possde plus de 63 caractres. -SendBufferSize octets 0 sMTaille du tampon TCP en sortie -ServerAdmin adresse lectronique|URLsvCL'adresse lectronique que le serveur inclut dans les +SendBufferSize octets 0 sMTaille du tampon TCP en sortie +ServerAdmin adresse lectronique|URLsvCL'adresse lectronique que le serveur inclut dans les messages d'erreur envoys au client -ServerAlias nom serveur [nom serveur] -...vCAutres noms d'un serveur utilisables pour atteindre des +ServerAlias nom serveur [nom serveur] +...vCAutres noms d'un serveur utilisables pour atteindre des serveurs virtuels base de nom -ServerLimit nombresMLimite suprieure de la dfinition du nombre de +ServerLimit nombresMLimite suprieure de la dfinition du nombre de processus -ServerName -[protocole://]nom-de-domaine|adresse-ip[:port]svCNom d'hte et port que le serveur utilise pour +ServerName +[protocole://]nom-de-domaine|adresse-ip[:port]svCNom d'hte et port que le serveur utilise pour s'authentifier lui-mme -ServerPath chemin d'URLvCNom de chemin d'URL hrit pour un serveur virtuel base +ServerPath chemin d'URLvCNom de chemin d'URL hrit pour un serveur virtuel base de nom accd par un navigateur incompatible -ServerRoot chemin de rpertoire /usr/local/apache sCRacine du rpertoire d'installation du +ServerRoot chemin de rpertoire /usr/local/apache sCRacine du rpertoire d'installation du serveur -ServerSignature On|Off|EMail Off svdhCDfinit un pied de page pour les documents gnrs par le +ServerSignature On|Off|EMail Off svdhCDfinit un pied de page pour les documents gnrs par le serveur -ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full Full sCConfigure l'en-tte Server de la rponse +ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full Full sCConfigure l'en-tte Server de la rponse HTTP -Session On|Off Off svdhEOuvre une session pour le contexte courant -SessionCookieName nom attributssvdhENom et attributs du cookie RFC2109 dans lequel la session +Session On|Off Off svdhEOuvre une session pour le contexte courant +SessionCookieName nom attributssvdhENom et attributs du cookie RFC2109 dans lequel la session est stocke -SessionCookieName2 nom attributssvdhENom et attributs pour le cookie RFC2965 dans lequel est +SessionCookieName2 nom attributssvdhENom et attributs pour le cookie RFC2965 dans lequel est stocke la session -SessionCookieRemove On|Off Off svdhEDtermine si les cookies de session doivent tre supprims +SessionCookieRemove On|Off Off svdhEDtermine si les cookies de session doivent tre supprims des en-ttes HTTP entrants -SessionCryptoCipher algorithmesvdhXL'algorithme utiliser pour le chiffrement de la session -SessionCryptoDriver nom [param[=valeur]]sXLe pilote de chiffrement utiliser pour chiffrer les +SessionCryptoCipher algorithmesvdhXL'algorithme utiliser pour le chiffrement de la session +SessionCryptoDriver nom [param[=valeur]]sXLe pilote de chiffrement utiliser pour chiffrer les sessions -SessionCryptoPassphrase secret [ secret ... ] svdhXLa cl utilise pour chiffrer la session -SessionCryptoPassphraseFile nom-fichiersvdXLe fichier contenant les cls utilises pour chiffrer la +SessionCryptoPassphrase secret [ secret ... ] svdhXLa cl utilise pour chiffrer la session +SessionCryptoPassphraseFile nom-fichiersvdXLe fichier contenant les cls utilises pour chiffrer la session -SessionDBDCookieName nom attributssvdhENom et attributs du cookie RFC2109 qui contient +SessionDBDCookieName nom attributssvdhENom et attributs du cookie RFC2109 qui contient l'identifiant de session -SessionDBDCookieName2 nom attributssvdhENom et attributs du cookie RFC2965 qui contient +SessionDBDCookieName2 nom attributssvdhENom et attributs du cookie RFC2965 qui contient l'identifiant de session -SessionDBDCookieRemove On|Off On svdhEDtermine si les cookies de session doivent tre supprims +SessionDBDCookieRemove On|Off On svdhEDtermine si les cookies de session doivent tre supprims des en-ttes HTTP entrants -SessionDBDDeleteLabel tiquette deletesession svdhELa requte SQL utiliser pour supprimer des sessions de la +SessionDBDDeleteLabel tiquette deletesession svdhELa requte SQL utiliser pour supprimer des sessions de la base de donnes -SessionDBDInsertLabel tiquette insertsession svdhELa requte SQL utiliser pour insrer des sessions dans la +SessionDBDInsertLabel tiquette insertsession svdhELa requte SQL utiliser pour insrer des sessions dans la base de donnes -SessionDBDPerUser On|Off Off svdhEActive une session propre un utilisateur -SessionDBDSelectLabel tiquette selectsession svdhELa requte SQL utiliser pour slectionner des sessions +SessionDBDPerUser On|Off Off svdhEActive une session propre un utilisateur +SessionDBDSelectLabel tiquette selectsession svdhELa requte SQL utiliser pour slectionner des sessions dans la base de donnes -SessionDBDUpdateLabel tiquette updatesession svdhELa requte SQL utiliser pour mettre jour des sessions +SessionDBDUpdateLabel tiquette updatesession svdhELa requte SQL utiliser pour mettre jour des sessions prexistantes dans la base de donnes -SessionEnv On|Off Off svdhEDfinit si le contenu de la session doit tre enregistr +SessionEnv On|Off Off svdhEDfinit si le contenu de la session doit tre enregistr dans la variable d'environnement HTTP_SESSION -SessionExclude cheminsvdhEDfinit les prfixes d'URLs pour lesquels une session sera +SessionExclude cheminsvdhEDfinit les prfixes d'URLs pour lesquels une session sera ignore -SessionHeader en-ttesvdhEImportation des mises jour de session depuis l'en-tte de +SessionHeader en-ttesvdhEImportation des mises jour de session depuis l'en-tte de rponse HTTP spcifi -SessionInclude cheminsvdhEDfinit les prfixes d'URL pour lesquels une session est +SessionInclude cheminsvdhEDfinit les prfixes d'URL pour lesquels une session est valide -SessionMaxAge dure de vie maximale 0 svdhEDfinit une dure de vie maximale pour la session en +SessionMaxAge dure de vie maximale 0 svdhEDfinit une dure de vie maximale pour la session en secondes -SetEnv var-env [valeur]svdhBDfinit des variables d'environnement -SetEnvIf attribut +SetEnv var-env [valeur]svdhBDfinit des variables d'environnement +SetEnvIf attribut regex [!]env-variable[=valeur] - [[!]env-variable[=valeur]] ...svdhBDfinit des variables d'environnement en fonction des + [[!]env-variable[=valeur]] ...svdhBDfinit des variables d'environnement en fonction des attributs de la requte -SetEnvIfExpr expr +SetEnvIfExpr expr [!]env-variable[=valeur] - [[!]env-variable[=valeur]] ...svdhBDfinit des variables d'environnement en fonction d'une expression ap_expr -SetEnvIfNoCase attribut regex + [[!]env-variable[=valeur]] ...svdhBDfinit des variables d'environnement en fonction d'une expression ap_expr +SetEnvIfNoCase attribut regex [!]env-variable[=valeur] - [[!]env-variable[=valeur]] ...svdhBDfinit des variables d'environnement en fonction des + [[!]env-variable[=valeur]] ...svdhBDfinit des variables d'environnement en fonction des attributs de la requte sans tenir compte de la casse -SetHandler handler-name|none|expressionsvdhCForce le traitement des fichiers spcifis par un +SetHandler handler-name|none|expressionsvdhCForce le traitement des fichiers spcifis par un gestionnaire particulier -SetInputFilter filtre[;filtre...]svdhCDfinit les filtres par lesquels vont passer les requtes +SetInputFilter filtre[;filtre...]svdhCDfinit les filtres par lesquels vont passer les requtes client et les donnes POST -SetOutputFilter filtre[;filtre...]svdhCDfinit les filtres par lesquels vont passer les rponses +SetOutputFilter filtre[;filtre...]svdhCDfinit les filtres par lesquels vont passer les rponses du serveur -SSIEndTag tag "-->" svBChane qui termine l'lment include -SSIErrorMsg message "[an error occurred +svdhBMessage d'erreur affich lorsqu'une erreur SSI +SSIEndTag tag "-->" svBChane qui termine l'lment include +SSIErrorMsg message "[an error occurred +svdhBMessage d'erreur affich lorsqu'une erreur SSI survient -SSIETag on|off off dhBDfinit si des en-ttes ETags sont gnrs par le serveur. -SSILastModified on|off off dhBDfinit si des en-ttes Last-Modified sont +SSIETag on|off off dhBDfinit si des en-ttes ETags sont gnrs par le serveur. +SSILastModified on|off off dhBDfinit si des en-ttes Last-Modified sont gnrs par le serveur. -SSILegacyExprParser on|off off dhBActive le mode de compatibilit pour les expressions +SSILegacyExprParser on|off off dhBActive le mode de compatibilit pour les expressions conditionnelles. -SSIStartTag tag "<!--#" svBChane qui marque le dbut d'un lment +SSIStartTag tag "<!--#" svBChane qui marque le dbut d'un lment include -SSITimeFormat chane de formatage "%A, %d-%b-%Y %H:%M +svdhBConfiguration du format d'affichage des dates -SSIUndefinedEcho chane "(none)" svdhBChane afficher lorsqu'on tente d'extraire le contenu +SSITimeFormat chane de formatage "%A, %d-%b-%Y %H:%M +svdhBConfiguration du format d'affichage des dates +SSIUndefinedEcho chane "(none)" svdhBChane afficher lorsqu'on tente d'extraire le contenu d'une variable non dfinie -SSLCACertificateFile chemin-fichiersvEFichier contenant une concatnation des certificats de CA +SSLCACertificateFile chemin-fichiersvEFichier contenant une concatnation des certificats de CA cods en PEM pour l'authentification des clients -SSLCACertificatePath chemin-rpertoiresvERpertoire des certificats de CA cods en PEM pour +SSLCACertificatePath chemin-rpertoiresvERpertoire des certificats de CA cods en PEM pour l'authentification des clients -SSLCADNRequestFile chemin-fichiersvEFichier contenant la concatnation des certificats de CA +SSLCADNRequestFile chemin-fichiersvEFichier contenant la concatnation des certificats de CA cods en PEM pour la dfinition de noms de CA acceptables -SSLCADNRequestPath chemin-rpertoiresvERpertoire contenant des fichiers de certificats de CA +SSLCADNRequestPath chemin-rpertoiresvERpertoire contenant des fichiers de certificats de CA cods en PEM pour la dfinition de noms de CA acceptables -SSLCARevocationCheck chain|leaf|none flags none svEActive la vrification des rvocations base sur les CRL -SSLCARevocationFile chemin-fichiersvEFichier contenant la concatnation des CRLs des CA cods en +SSLCARevocationCheck chain|leaf|none flags none svEActive la vrification des rvocations base sur les CRL +SSLCARevocationFile chemin-fichiersvEFichier contenant la concatnation des CRLs des CA cods en PEM pour l'authentification des clients -SSLCARevocationPath chemin-rpertoiresvERpertoire des CRLs de CA cods en PEM pour +SSLCARevocationPath chemin-rpertoiresvERpertoire des CRLs de CA cods en PEM pour l'authentification des clients -SSLCertificateChainFile chemin-fichiersvEFichier contenant les certificats de CA du serveur cods en +SSLCertificateChainFile chemin-fichiersvEFichier contenant les certificats de CA du serveur cods en PEM -SSLCertificateFile chemin-fichiersvEFichier de donnes contenant le certificat X.509 du serveur cod en +SSLCertificateFile chemin-fichiersvEFichier de donnes contenant le certificat X.509 du serveur cod en PEM -SSLCertificateKeyFile chemin-fichiersvEFichier contenant la cl prive du serveur code en +SSLCertificateKeyFile chemin-fichiersvEFichier contenant la cl prive du serveur code en PEM -SSLCipherSuite algorithmes DEFAULT (dpend de +svdhEAlgorithmes de chiffrement disponibles pour la ngociation +SSLCipherSuite algorithmes DEFAULT (dpend de +svdhEAlgorithmes de chiffrement disponibles pour la ngociation au cours de l'initialisation de la connexion SSL -SSLCompression on|off off svEPermet d'activer la compression au niveau SSL -SSLCryptoDevice moteur builtin sEActive l'utilisation d'un acclrateur matriel de +SSLCompression on|off off svEPermet d'activer la compression au niveau SSL +SSLCryptoDevice moteur builtin sEActive l'utilisation d'un acclrateur matriel de chiffrement -SSLEngine on|off|optional off svEInterrupteur marche/arrt du moteur SSL -SSLFIPS on|off off sECoimmutateur du mode SSL FIPS -SSLHonorCipherOrder on|off off svEOption permettant de classer les algorithmes de chiffrement +SSLEngine on|off|optional off svEInterrupteur marche/arrt du moteur SSL +SSLFIPS on|off off sECoimmutateur du mode SSL FIPS +SSLHonorCipherOrder on|off off svEOption permettant de classer les algorithmes de chiffrement du serveur par ordre de prfrence -SSLInsecureRenegotiation on|off off svEOption permettant d'activer le support de la rengociation +SSLInsecureRenegotiation on|off off svEOption permettant d'activer le support de la rengociation non scurise -SSLOCSDefaultResponder urisvEDfinit l'URI du rpondeur par dfaut pour la validation +SSLOCSDefaultResponder urisvEDfinit l'URI du rpondeur par dfaut pour la validation OCSP -SSLOCSPEnable on|off off svEActive la validation OCSP de la chane de certificats du +SSLOCSPEnable on|off off svEActive la validation OCSP de la chane de certificats du client -SSLOCSPOverrideResponder on|off off svEForce l'utilisation de l'URI du rpondeur par dfaut pour +SSLOCSPOverrideResponder on|off off svEForce l'utilisation de l'URI du rpondeur par dfaut pour la validation OCSP -SSLOCSPProxyURL urlsvEAdresse de mandataire utiliser pour les requtes OCSP -SSLOCSPResponderTimeout secondes 10 svEDlai d'attente pour les requtes OCSP -SSLOCSPResponseMaxAge secondes -1 svEAge maximum autoris pour les rponses OCSP -SSLOCSPResponseTimeSkew secondes 300 svEDrive temporelle maximale autorise pour la validation des +SSLOCSPProxyURL urlsvEAdresse de mandataire utiliser pour les requtes OCSP +SSLOCSPResponderTimeout secondes 10 svEDlai d'attente pour les requtes OCSP +SSLOCSPResponseMaxAge secondes -1 svEAge maximum autoris pour les rponses OCSP +SSLOCSPResponseTimeSkew secondes 300 svEDrive temporelle maximale autorise pour la validation des rponses OCSP -SSLOCSPUseRequestNonce on|off on svEUse a nonce within OCSP queries -SSLOpenSSLConfCmd commande valeursvEConfiguration des paramtres d'OpenSSL via son API SSL_CONF -SSLOptions [+|-]option ...svdhEConfigure diffrentes options d'excution du moteur SSL -SSLPassPhraseDialog type builtin sEMthode utilise pour entrer le mot de passe pour les cls +SSLOCSPUseRequestNonce on|off on svEUse a nonce within OCSP queries +SSLOpenSSLConfCmd commande valeursvEConfiguration des paramtres d'OpenSSL via son API SSL_CONF +SSLOptions [+|-]option ...svdhEConfigure diffrentes options d'excution du moteur SSL +SSLPassPhraseDialog type builtin sEMthode utilise pour entrer le mot de passe pour les cls prives chiffres -SSLProtocol [+|-]protocole ... all -SSLv3 (jusqu' +svEIndique les versions du protocole SSL/TLS +SSLProtocol [+|-]protocole ... all -SSLv3 (jusqu' +svEIndique les versions du protocole SSL/TLS disponibles -SSLProxyCACertificateFile file-pathsvEFichier contenant la concatnation des certificats de CA +SSLProxyCACertificateFile file-pathsvEFichier contenant la concatnation des certificats de CA cods en PEM pour l'authentification des serveurs distants -SSLProxyCACertificatePath chemin-rpertoiresvERpertoire des certificats de CA cods en PEM pour +SSLProxyCACertificatePath chemin-rpertoiresvERpertoire des certificats de CA cods en PEM pour l'authentification des serveurs distants -SSLProxyCARevocationCheck chain|leaf|none none svEActive la vrification des rvocations base sur les CRLs +SSLProxyCARevocationCheck chain|leaf|none none svEActive la vrification des rvocations base sur les CRLs pour l'authentification du serveur distant -SSLProxyCARevocationFile chemin-fichiersvEFichier contenant la concatnation des CRLs de CA cods en +SSLProxyCARevocationFile chemin-fichiersvEFichier contenant la concatnation des CRLs de CA cods en PEM pour l'authentification des serveurs distants -SSLProxyCARevocationPath chemin-rpertoiresvERpertoire des CRLs de CA cods en PEM pour +SSLProxyCARevocationPath chemin-rpertoiresvERpertoire des CRLs de CA cods en PEM pour l'authentification des serveurs distants -SSLProxyCheckPeerCN on|off on svEConfiguration de la vrification du champ CN du certificat +SSLProxyCheckPeerCN on|off on svEConfiguration de la vrification du champ CN du certificat du serveur distant -SSLProxyCheckPeerExpire on|off on svEConfiguration de la vrification de l'expiration du +SSLProxyCheckPeerExpire on|off on svEConfiguration de la vrification de l'expiration du certificat du serveur distant -SSLProxyCheckPeerName on|off on svEConfigure la vrification du nom d'hte dans les +SSLProxyCheckPeerName on|off on svEConfigure la vrification du nom d'hte dans les certificats serveur distants -SSLProxyCipherSuite algorithmes ALL:!ADH:RC4+RSA:+H +svdhEAlgorithmes de chiffrement disponibles pour la ngociation +SSLProxyCipherSuite algorithmes ALL:!ADH:RC4+RSA:+H +svdhEAlgorithmes de chiffrement disponibles pour la ngociation lors de l'initialisation d'une connexion SSL de mandataire -SSLProxyEngine on|off off svEInterrupteur marche/arrt du moteur de mandataire +SSLProxyEngine on|off off svEInterrupteur marche/arrt du moteur de mandataire SSL -SSLProxyMachineCertificateChainFile nom-fichiersEFichier de certificats de CA encods PEM concatns permettant au +SSLProxyMachineCertificateChainFile nom-fichiersEFichier de certificats de CA encods PEM concatns permettant au mandataire de choisir un certificat -SSLProxyMachineCertificateFile chemin-fichiersEFichier contenant la concatnation des cls et certificats +SSLProxyMachineCertificateFile chemin-fichiersEFichier contenant la concatnation des cls et certificats clients cods en PEM que le mandataire doit utiliser -SSLProxyMachineCertificatePath chemin-rpertoiresERpertoire des cls et certificats clients cods en PEM que +SSLProxyMachineCertificatePath chemin-rpertoiresERpertoire des cls et certificats clients cods en PEM que le mandataire doit utiliser -SSLProxyProtocol [+|-]protocole ... all -SSLv3 (jusqu' +svEDfinit les protocoles SSL disponibles pour la fonction de +SSLProxyProtocol [+|-]protocole ... all -SSLv3 (jusqu' +svEDfinit les protocoles SSL disponibles pour la fonction de mandataire -SSLProxyVerify niveau none svENiveau de vrification du certificat du serveur +SSLProxyVerify niveau none svENiveau de vrification du certificat du serveur distant -SSLProxyVerifyDepth niveau 1 svENiveau de profondeur maximum dans les certificats de CA +SSLProxyVerifyDepth niveau 1 svENiveau de profondeur maximum dans les certificats de CA lors de la vrification du certificat du serveur distant -SSLRandomSeed contexte source -[nombre]sESource de dclenchement du Gnrateur de Nombres +SSLRandomSeed contexte source +[nombre]sESource de dclenchement du Gnrateur de Nombres Pseudo-Alatoires (PRNG) -SSLRenegBufferSize taille 131072 dhEDfinit la taille du tampon de rengociation +SSLRenegBufferSize taille 131072 dhEDfinit la taille du tampon de rengociation SSL -SSLRequire expressiondhEN'autorise l'accs que lorsqu'une expression boolenne +SSLRequire expressiondhEN'autorise l'accs que lorsqu'une expression boolenne complexe et arbitraire est vraie -SSLRequireSSLdhEInterdit l'accs lorsque la requte HTTP n'utilise pas +SSLRequireSSLdhEInterdit l'accs lorsque la requte HTTP n'utilise pas SSL -SSLSessionCache type none sEType du cache de session SSL global et +SSLSessionCache type none sEType du cache de session SSL global et inter-processus -SSLSessionCacheTimeout secondes 300 svENombre de secondes avant l'expiration d'une session SSL +SSLSessionCacheTimeout secondes 300 svENombre de secondes avant l'expiration d'une session SSL dans le cache de sessions -SSLSessionTicketKeyFile chemin-fichiersvECl de chiffrement/dchiffrement permanente pour les +SSLSessionTicketKeyFile chemin-fichiersvECl de chiffrement/dchiffrement permanente pour les tickets de session TLS -SSLSessionTickets on|off on svEActive ou dsactive les tickets de session TLS -SSLSRPUnknownUserSeed secret-stringsvESource d'ala pour utilisateur SRP inconnu -SSLSRPVerifierFile file-pathsvEChemin du fichier de vrification SRP -SSLStaplingCache typesEConfiguration du cache pour l'agrafage OCSP -SSLStaplingErrorCacheTimeout secondes 600 svEDure de vie des rponses invalides dans le cache pour +SSLSessionTickets on|off on svEActive ou dsactive les tickets de session TLS +SSLSRPUnknownUserSeed secret-stringsvESource d'ala pour utilisateur SRP inconnu +SSLSRPVerifierFile file-pathsvEChemin du fichier de vrification SRP +SSLStaplingCache typesEConfiguration du cache pour l'agrafage OCSP +SSLStaplingErrorCacheTimeout secondes 600 svEDure de vie des rponses invalides dans le cache pour agrafage OCSP -SSLStaplingFakeTryLater on|off on svEGnre une rponse "tryLater" pour les requtes OCSP choues -SSLStaplingForceURL urisvERemplace l'URI du serveur OCSP spcifi dans l'extension +SSLStaplingFakeTryLater on|off on svEGnre une rponse "tryLater" pour les requtes OCSP choues +SSLStaplingForceURL urisvERemplace l'URI du serveur OCSP spcifi dans l'extension AIA du certificat -SSLStaplingResponderTimeout secondes 10 svETemps d'attente maximum pour les requtes vers les serveurs +SSLStaplingResponderTimeout secondes 10 svETemps d'attente maximum pour les requtes vers les serveurs OCSP -SSLStaplingResponseMaxAge secondes -1 svEAge maximum autoris des rponses OCSP incluses dans la +SSLStaplingResponseMaxAge secondes -1 svEAge maximum autoris des rponses OCSP incluses dans la ngociation TLS -SSLStaplingResponseTimeSkew secondes 300 svEDure de vie maximale autorise des rponses OCSP incluses dans la +SSLStaplingResponseTimeSkew secondes 300 svEDure de vie maximale autorise des rponses OCSP incluses dans la ngociation TLS -SSLStaplingReturnResponderErrors on|off on svETransmet au client les erreurs survenues lors des requtes +SSLStaplingReturnResponderErrors on|off on svETransmet au client les erreurs survenues lors des requtes OCSP -SSLStaplingStandardCacheTimeout secondes 3600 svEDure de vie des rponses OCSP dans le cache -SSLStrictSNIVHostCheck on|off off svEContrle de l'accs des clients non-SNI un serveur virtuel +SSLStaplingStandardCacheTimeout secondes 3600 svEDure de vie des rponses OCSP dans le cache +SSLStrictSNIVHostCheck on|off off svEContrle de l'accs des clients non-SNI un serveur virtuel base de nom. -SSLUserName nom-varsdhENom de la variable servant dterminer le nom de +SSLUserName nom-varsdhENom de la variable servant dterminer le nom de l'utilisateur -SSLUseStapling on|off off svEActive l'ajout des rponses OCSP la ngociation TLS -SSLVerifyClient niveau none svdhENiveau de vrification du certificat client -SSLVerifyDepth nombre 1 svdhEProfondeur maximale des certificats de CA pour la +SSLUseStapling on|off off svEActive l'ajout des rponses OCSP la ngociation TLS +SSLVerifyClient niveau none svdhENiveau de vrification du certificat client +SSLVerifyDepth nombre 1 svdhEProfondeur maximale des certificats de CA pour la vrification des certificats clients -StartServers nombresMNombre de processus enfants du serveur crs au +StartServers nombresMNombre de processus enfants du serveur crs au dmarrage -StartThreads nombresMNombre de threads crs au dmarrage -Substitute s/modle/substitution/[infq]dhEModle de substition dans le contenu de la +StartThreads nombresMNombre de threads crs au dmarrage +Substitute s/modle/substitution/[infq]dhEModle de substition dans le contenu de la rponse -SubstituteInheritBefore on|off on dhEModifie l'ordre de fusion des modles hrits -SubstituteMaxLineLength octets(b|B|k|K|m|M|g|G) 1m dhEDfinit la longueur de ligne maximale -Suexec On|OffsBActive ou dsactive la fonctionnalit suEXEC -SuexecUserGroup Utilisateur GroupesvEL'utilisateur et le groupe sous lesquels les programmes CGI +SubstituteInheritBefore on|off on dhEModifie l'ordre de fusion des modles hrits +SubstituteMaxLineLength octets(b|B|k|K|m|M|g|G) 1m dhEDfinit la longueur de ligne maximale +Suexec On|OffsBActive ou dsactive la fonctionnalit suEXEC +SuexecUserGroup Utilisateur GroupesvEL'utilisateur et le groupe sous lesquels les programmes CGI doivent s'excuter -ThreadLimit nombresMLe nombre de threads maximum que l'on peut dfinir par +ThreadLimit nombresMLe nombre de threads maximum que l'on peut dfinir par processus enfant -ThreadsPerChild nombresMNombre de threads crs par chaque processus +ThreadsPerChild nombresMNombre de threads crs par chaque processus enfant -ThreadStackSize taillesMLa taille en octets de la pile qu'utilisent les threads qui +ThreadStackSize taillesMLa taille en octets de la pile qu'utilisent les threads qui traitent les connexions clients -TimeOut secondes 60 svCTemps pendant lequel le serveur va attendre certains +TimeOut secondes 60 svCTemps pendant lequel le serveur va attendre certains vnements avant de considrer qu'une requte a chou -TraceEnable [on|off|extended] on svCDtermine le comportement des requtes +TraceEnable [on|off|extended] on svCDtermine le comportement des requtes TRACE -TransferLog fichier|pipesvBSpcifie l'emplacement d'un fichier journal -TypesConfig chemin-fichier conf/mime.types sBLe chemin du fichier mime.types -UnDefine nom-variablesCInvalide la dfinition d'une variable -UndefMacro namesvdBUndefine a macro -UnsetEnv var-env [var-env] -...svdhBSupprime des variables de l'environnement -Use nom [valeur1 ... valeurN] -svdBUtilisation d'une macro -UseCanonicalName On|Off|DNS Off svdCDfinit la manire dont le serveur dtermine son propre nom +TransferLog fichier|pipesvBSpcifie l'emplacement d'un fichier journal +TypesConfig chemin-fichier conf/mime.types sBLe chemin du fichier mime.types +UnDefine nom-variablesCInvalide la dfinition d'une variable +UndefMacro namesvdBUndefine a macro +UnsetEnv var-env [var-env] +...svdhBSupprime des variables de l'environnement +Use nom [valeur1 ... valeurN] +svdBUtilisation d'une macro +UseCanonicalName On|Off|DNS Off svdCDfinit la manire dont le serveur dtermine son propre nom et son port -UseCanonicalPhysicalPort On|Off Off svdCDfinit la manire dont le serveur +UseCanonicalPhysicalPort On|Off Off svdCDfinit la manire dont le serveur dtermine son propre port -User utilisateur unix #-1 sBL'utilisateur sous lequel le serveur va traiter les +User utilisateur unix #-1 sBL'utilisateur sous lequel le serveur va traiter les requtes -UserDir nom-rpertoire [nom-rpertoire] ... -svBChemin des rpertoires propres un +UserDir nom-rpertoire [nom-rpertoire] ... +svBChemin des rpertoires propres un utilisateur -VHostCGIMode On|Off|Secure On vXDtermine si le serveur virtuel peut excuter des +VHostCGIMode On|Off|Secure On vXDtermine si le serveur virtuel peut excuter des sous-processus, et dfinit les privilges disponibles pour ces dernier. -VHostPrivs [+-]?nom-privilge [[+-]?nom-privilge] ...vXAssigne des privilges au choix aux sous-processus crs +VHostPrivs [+-]?nom-privilge [[+-]?nom-privilge] ...vXAssigne des privilges au choix aux sous-processus crs par un serveur virtuel. -VHostGroup identifiant-groupe-unixvXDfinit l'identifiant du groupe sous lequel s'excute un +VHostGroup identifiant-groupe-unixvXDfinit l'identifiant du groupe sous lequel s'excute un serveur virtuel. -VHostPrivs [+-]?nom-privilge [[+-]?nom-privilge] ...vXAssigne des privilges un serveur virtuel. -VHostSecure On|Off On vXDtermine si le serveur s'excute avec une scurit avance +VHostPrivs [+-]?nom-privilge [[+-]?nom-privilge] ...vXAssigne des privilges un serveur virtuel. +VHostSecure On|Off On vXDtermine si le serveur s'excute avec une scurit avance pour les serveurs virtuels. -VHostUser identifiant-utilisateur-unixvXDfinit l'identifiant utilisateur sous lequel s'excute un +VHostUser identifiant-utilisateur-unixvXDfinit l'identifiant utilisateur sous lequel s'excute un serveur virtuel. -VirtualDocumentRoot rpertoire-interpol|none none svEPermet une configuration dynamique de la racine des +VirtualDocumentRoot rpertoire-interpol|none none svEPermet une configuration dynamique de la racine des documents d'un serveur virtuel donn -VirtualDocumentRootIP rpertoire-interpol|none none svEConfiguration dynamique de la racine des documents pour un +VirtualDocumentRootIP rpertoire-interpol|none none svEConfiguration dynamique de la racine des documents pour un serveur virtuel donn -<VirtualHost +<VirtualHost adresse IP[:port] [adresse IP[:port]] ...> ... - </VirtualHost>sCContient des directives qui ne s'appliquent qu' un nom + </VirtualHost>sCContient des directives qui ne s'appliquent qu' un nom d'hte spcifique ou une adresse IP -VirtualScriptAlias rpertoire-interpol|none none svEConfiguration dynamique du rpertoire des scripts CGI pour +VirtualScriptAlias rpertoire-interpol|none none svEConfiguration dynamique du rpertoire des scripts CGI pour un serveur virtuel donn -VirtualScriptAliasIP rpertoire-interpol|none none svEConfiguration dynamique du rpertoire des scripts CGI pour +VirtualScriptAliasIP rpertoire-interpol|none none svEConfiguration dynamique du rpertoire des scripts CGI pour un serveur virtuel donn -WatchdogInterval number-of-seconds 1 sBWatchdog interval in seconds -XBitHack on|off|full off svdhBInterprte les directives SSI dans les fichiers dont le bit +WatchdogInterval number-of-seconds 1 sBWatchdog interval in seconds +XBitHack on|off|full off svdhBInterprte les directives SSI dans les fichiers dont le bit d'excution est positionn -xml2EncAlias jeu-de-caractres alias [alias ...]sBDfinit des alias pour les valeurs d'encodage -xml2EncDefault nomsvdhBDfinit un encodage par dfaut utiliser lorsqu'aucune +xml2EncAlias jeu-de-caractres alias [alias ...]sBDfinit des alias pour les valeurs d'encodage +xml2EncDefault nomsvdhBDfinit un encodage par dfaut utiliser lorsqu'aucune information ne peut tre automatiquement dtecte -xml2StartParse lment [lment ...]svdhBIndique l'interprteur partir de quelle balise il doit +xml2StartParse lment [lment ...]svdhBIndique l'interprteur partir de quelle balise il doit commencer son traitement.
    -- GitLab From fa8f38776ad5965600e20e340d9c18cc4b4c0a08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Malo?= Date: Sun, 27 Nov 2016 22:22:06 +0000 Subject: [PATCH 014/224] use consistent encoding between xml.fr files (utf-8) git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1771657 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/bind.xml.fr | 2 +- docs/manual/configuring.xml.fr | 2 +- docs/manual/content-negotiation.xml.fr | 2 +- docs/manual/dns-caveats.xml.fr | 2 +- docs/manual/dso.xml.fr | 2 +- docs/manual/env.xml.fr | 2 +- docs/manual/faq/index.xml.fr | 2 +- docs/manual/filter.xml.fr | 2 +- docs/manual/getting-started.xml.fr | 2 +- docs/manual/glossary.xml.fr | 2 +- docs/manual/handler.xml.fr | 2 +- docs/manual/invoking.xml.fr | 2 +- docs/manual/misc/index.xml.fr | 2 +- docs/manual/misc/password_encryptions.xml.fr | 2 +- docs/manual/misc/perf-tuning.xml.fr | 2 +- docs/manual/misc/relevant_standards.xml.fr | 2 +- docs/manual/misc/security_tips.xml.fr | 2 +- docs/manual/mod/directive-dict.xml.fr | 2 +- docs/manual/mod/mod_charset_lite.xml.fr | 2 +- docs/manual/mod/mod_mime.xml.fr | 2 +- docs/manual/mod/mod_proxy_ftp.xml.fr | 2 +- docs/manual/mod/mod_xml2enc.xml.fr | 2 +- docs/manual/mod/module-dict.xml.fr | 2 +- docs/manual/mpm.xml.fr | 2 +- docs/manual/new_features_2_0.xml.fr | 2 +- docs/manual/new_features_2_2.xml.fr | 2 +- docs/manual/platform/index.xml.fr | 2 +- docs/manual/platform/netware.xml.fr | 2 +- docs/manual/platform/perf-hp.xml.fr | 2 +- docs/manual/platform/win_compiling.xml.fr | 2 +- docs/manual/programs/apachectl.xml.fr | 2 +- docs/manual/programs/apxs.xml.fr | 2 +- docs/manual/programs/dbmmanage.xml.fr | 2 +- docs/manual/programs/fcgistarter.xml.fr | 2 +- docs/manual/programs/htcacheclean.xml.fr | 2 +- docs/manual/programs/htdbm.xml.fr | 2 +- docs/manual/programs/htdigest.xml.fr | 2 +- docs/manual/programs/httpd.xml.fr | 2 +- docs/manual/programs/httxt2dbm.xml.fr | 2 +- docs/manual/programs/logresolve.xml.fr | 2 +- docs/manual/programs/other.xml.fr | 2 +- docs/manual/programs/rotatelogs.xml.fr | 2 +- docs/manual/rewrite/advanced.xml.fr | 2 +- docs/manual/rewrite/htaccess.xml.fr | 2 +- docs/manual/rewrite/index.xml.fr | 2 +- docs/manual/rewrite/intro.xml.fr | 2 +- docs/manual/rewrite/proxy.xml.fr | 2 +- docs/manual/rewrite/remapping.xml.fr | 2 +- docs/manual/rewrite/tech.xml.fr | 2 +- docs/manual/server-wide.xml.fr | 2 +- docs/manual/ssl/index.xml.fr | 2 +- docs/manual/ssl/ssl_compat.xml.fr | 2 +- docs/manual/ssl/ssl_faq.xml.fr | 2 +- docs/manual/ssl/ssl_howto.xml.fr | 2 +- docs/manual/ssl/ssl_intro.xml.fr | 2 +- docs/manual/stopping.xml.fr | 2 +- docs/manual/suexec.xml.fr | 2 +- docs/manual/vhosts/details.xml.fr | 298 +++++++++---------- docs/manual/vhosts/examples.xml.fr | 226 +++++++------- docs/manual/vhosts/fd-limits.xml.fr | 86 +++--- docs/manual/vhosts/index.xml.fr | 44 +-- docs/manual/vhosts/ip-based.xml.fr | 110 +++---- docs/manual/vhosts/mass.xml.fr | 2 +- docs/manual/vhosts/name-based.xml.fr | 216 +++++++------- 64 files changed, 548 insertions(+), 548 deletions(-) diff --git a/docs/manual/bind.xml.fr b/docs/manual/bind.xml.fr index f98e7fa0c9..95f8764112 100644 --- a/docs/manual/bind.xml.fr +++ b/docs/manual/bind.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/configuring.xml.fr b/docs/manual/configuring.xml.fr index 91ab0c4e83..a131155f44 100644 --- a/docs/manual/configuring.xml.fr +++ b/docs/manual/configuring.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/content-negotiation.xml.fr b/docs/manual/content-negotiation.xml.fr index 32c649fb7a..98cbccbe7a 100644 --- a/docs/manual/content-negotiation.xml.fr +++ b/docs/manual/content-negotiation.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/dns-caveats.xml.fr b/docs/manual/dns-caveats.xml.fr index 66999b1885..721caf6dcc 100644 --- a/docs/manual/dns-caveats.xml.fr +++ b/docs/manual/dns-caveats.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/dso.xml.fr b/docs/manual/dso.xml.fr index fe65df936a..803f818454 100644 --- a/docs/manual/dso.xml.fr +++ b/docs/manual/dso.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/env.xml.fr b/docs/manual/env.xml.fr index a9d7bbe8ce..e1f3a9fb3c 100644 --- a/docs/manual/env.xml.fr +++ b/docs/manual/env.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/faq/index.xml.fr b/docs/manual/faq/index.xml.fr index a3fc2d03ef..bbcf7c2db2 100644 --- a/docs/manual/faq/index.xml.fr +++ b/docs/manual/faq/index.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/filter.xml.fr b/docs/manual/filter.xml.fr index a904138955..9d3e57e7e6 100644 --- a/docs/manual/filter.xml.fr +++ b/docs/manual/filter.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/getting-started.xml.fr b/docs/manual/getting-started.xml.fr index d59c96a1b8..28a9c06467 100644 --- a/docs/manual/getting-started.xml.fr +++ b/docs/manual/getting-started.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/glossary.xml.fr b/docs/manual/glossary.xml.fr index 6e0cb7d603..0406dcab1a 100644 --- a/docs/manual/glossary.xml.fr +++ b/docs/manual/glossary.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/handler.xml.fr b/docs/manual/handler.xml.fr index 1fe963eca7..5d936c9dd5 100644 --- a/docs/manual/handler.xml.fr +++ b/docs/manual/handler.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/invoking.xml.fr b/docs/manual/invoking.xml.fr index 6f5e0e4b0d..0b65a19956 100644 --- a/docs/manual/invoking.xml.fr +++ b/docs/manual/invoking.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/misc/index.xml.fr b/docs/manual/misc/index.xml.fr index 4e54b0b90b..4fc8ae5292 100644 --- a/docs/manual/misc/index.xml.fr +++ b/docs/manual/misc/index.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/misc/password_encryptions.xml.fr b/docs/manual/misc/password_encryptions.xml.fr index aba2c1ca62..b20fb48c29 100644 --- a/docs/manual/misc/password_encryptions.xml.fr +++ b/docs/manual/misc/password_encryptions.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/misc/perf-tuning.xml.fr b/docs/manual/misc/perf-tuning.xml.fr index acd0146787..254d0eb2bb 100644 --- a/docs/manual/misc/perf-tuning.xml.fr +++ b/docs/manual/misc/perf-tuning.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/misc/relevant_standards.xml.fr b/docs/manual/misc/relevant_standards.xml.fr index 9f0efa3dea..2100ace767 100644 --- a/docs/manual/misc/relevant_standards.xml.fr +++ b/docs/manual/misc/relevant_standards.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/misc/security_tips.xml.fr b/docs/manual/misc/security_tips.xml.fr index 4c3a296d10..f9e872581a 100644 --- a/docs/manual/misc/security_tips.xml.fr +++ b/docs/manual/misc/security_tips.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/mod/directive-dict.xml.fr b/docs/manual/mod/directive-dict.xml.fr index 6c7573b2cf..06034bf5f2 100644 --- a/docs/manual/mod/directive-dict.xml.fr +++ b/docs/manual/mod/directive-dict.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/mod/mod_charset_lite.xml.fr b/docs/manual/mod/mod_charset_lite.xml.fr index 029d7fdf1d..e5325e1126 100644 --- a/docs/manual/mod/mod_charset_lite.xml.fr +++ b/docs/manual/mod/mod_charset_lite.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/mod/mod_mime.xml.fr b/docs/manual/mod/mod_mime.xml.fr index a02de9d289..8105f921e1 100644 --- a/docs/manual/mod/mod_mime.xml.fr +++ b/docs/manual/mod/mod_mime.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/mod/mod_proxy_ftp.xml.fr b/docs/manual/mod/mod_proxy_ftp.xml.fr index e3c88d5336..8cbb176608 100644 --- a/docs/manual/mod/mod_proxy_ftp.xml.fr +++ b/docs/manual/mod/mod_proxy_ftp.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/mod/mod_xml2enc.xml.fr b/docs/manual/mod/mod_xml2enc.xml.fr index 95fa0e2ffc..97972bfae2 100644 --- a/docs/manual/mod/mod_xml2enc.xml.fr +++ b/docs/manual/mod/mod_xml2enc.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/mod/module-dict.xml.fr b/docs/manual/mod/module-dict.xml.fr index aebb573b85..2be18d735b 100644 --- a/docs/manual/mod/module-dict.xml.fr +++ b/docs/manual/mod/module-dict.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/mpm.xml.fr b/docs/manual/mpm.xml.fr index d5fab12a5e..c1ee2be5b7 100644 --- a/docs/manual/mpm.xml.fr +++ b/docs/manual/mpm.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/new_features_2_0.xml.fr b/docs/manual/new_features_2_0.xml.fr index d7c3e9a404..c46b549b45 100644 --- a/docs/manual/new_features_2_0.xml.fr +++ b/docs/manual/new_features_2_0.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/new_features_2_2.xml.fr b/docs/manual/new_features_2_2.xml.fr index 2960fa35b4..1998997c96 100644 --- a/docs/manual/new_features_2_2.xml.fr +++ b/docs/manual/new_features_2_2.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/platform/index.xml.fr b/docs/manual/platform/index.xml.fr index 0cd4426774..f32df5b753 100644 --- a/docs/manual/platform/index.xml.fr +++ b/docs/manual/platform/index.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/platform/netware.xml.fr b/docs/manual/platform/netware.xml.fr index 8cd3000b3f..70f5675b54 100644 --- a/docs/manual/platform/netware.xml.fr +++ b/docs/manual/platform/netware.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/platform/perf-hp.xml.fr b/docs/manual/platform/perf-hp.xml.fr index d2d22fbc88..42d526e55d 100644 --- a/docs/manual/platform/perf-hp.xml.fr +++ b/docs/manual/platform/perf-hp.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/platform/win_compiling.xml.fr b/docs/manual/platform/win_compiling.xml.fr index 8a5c55d291..b9151723b8 100644 --- a/docs/manual/platform/win_compiling.xml.fr +++ b/docs/manual/platform/win_compiling.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/programs/apachectl.xml.fr b/docs/manual/programs/apachectl.xml.fr index ec814b2745..1ee7271fe2 100644 --- a/docs/manual/programs/apachectl.xml.fr +++ b/docs/manual/programs/apachectl.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/programs/apxs.xml.fr b/docs/manual/programs/apxs.xml.fr index a950bd5177..0bfe66db74 100644 --- a/docs/manual/programs/apxs.xml.fr +++ b/docs/manual/programs/apxs.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/programs/dbmmanage.xml.fr b/docs/manual/programs/dbmmanage.xml.fr index 0d7a4a9ae0..a165ebeeb7 100644 --- a/docs/manual/programs/dbmmanage.xml.fr +++ b/docs/manual/programs/dbmmanage.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/programs/fcgistarter.xml.fr b/docs/manual/programs/fcgistarter.xml.fr index 9f02122e2c..df573e3544 100644 --- a/docs/manual/programs/fcgistarter.xml.fr +++ b/docs/manual/programs/fcgistarter.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/programs/htcacheclean.xml.fr b/docs/manual/programs/htcacheclean.xml.fr index 802385bdac..e179e6c877 100644 --- a/docs/manual/programs/htcacheclean.xml.fr +++ b/docs/manual/programs/htcacheclean.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/programs/htdbm.xml.fr b/docs/manual/programs/htdbm.xml.fr index fabddfe7c7..2b683b7346 100644 --- a/docs/manual/programs/htdbm.xml.fr +++ b/docs/manual/programs/htdbm.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/programs/htdigest.xml.fr b/docs/manual/programs/htdigest.xml.fr index 43f84048e6..b57c8fce25 100644 --- a/docs/manual/programs/htdigest.xml.fr +++ b/docs/manual/programs/htdigest.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/programs/httpd.xml.fr b/docs/manual/programs/httpd.xml.fr index 00894fa52a..faf73df41f 100644 --- a/docs/manual/programs/httpd.xml.fr +++ b/docs/manual/programs/httpd.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/programs/httxt2dbm.xml.fr b/docs/manual/programs/httxt2dbm.xml.fr index 1a79941f60..506066eb32 100644 --- a/docs/manual/programs/httxt2dbm.xml.fr +++ b/docs/manual/programs/httxt2dbm.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/programs/logresolve.xml.fr b/docs/manual/programs/logresolve.xml.fr index f4262fb806..a79a55c32d 100644 --- a/docs/manual/programs/logresolve.xml.fr +++ b/docs/manual/programs/logresolve.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/programs/other.xml.fr b/docs/manual/programs/other.xml.fr index 07cac0a476..9764acb8d0 100644 --- a/docs/manual/programs/other.xml.fr +++ b/docs/manual/programs/other.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/programs/rotatelogs.xml.fr b/docs/manual/programs/rotatelogs.xml.fr index 39014e02cd..b98bff35f2 100644 --- a/docs/manual/programs/rotatelogs.xml.fr +++ b/docs/manual/programs/rotatelogs.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/rewrite/advanced.xml.fr b/docs/manual/rewrite/advanced.xml.fr index 5fcf4fca30..0f0a1e847e 100644 --- a/docs/manual/rewrite/advanced.xml.fr +++ b/docs/manual/rewrite/advanced.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/rewrite/htaccess.xml.fr b/docs/manual/rewrite/htaccess.xml.fr index c90d966fe7..c7678204f1 100644 --- a/docs/manual/rewrite/htaccess.xml.fr +++ b/docs/manual/rewrite/htaccess.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/rewrite/index.xml.fr b/docs/manual/rewrite/index.xml.fr index 3bbc2a1043..1bd5af5c1d 100644 --- a/docs/manual/rewrite/index.xml.fr +++ b/docs/manual/rewrite/index.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/rewrite/intro.xml.fr b/docs/manual/rewrite/intro.xml.fr index 71e3f7bf8e..0a432e75b7 100644 --- a/docs/manual/rewrite/intro.xml.fr +++ b/docs/manual/rewrite/intro.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/rewrite/proxy.xml.fr b/docs/manual/rewrite/proxy.xml.fr index c169597aa7..321e88a4c4 100644 --- a/docs/manual/rewrite/proxy.xml.fr +++ b/docs/manual/rewrite/proxy.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/rewrite/remapping.xml.fr b/docs/manual/rewrite/remapping.xml.fr index 94962af812..68723e92f1 100644 --- a/docs/manual/rewrite/remapping.xml.fr +++ b/docs/manual/rewrite/remapping.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/rewrite/tech.xml.fr b/docs/manual/rewrite/tech.xml.fr index 303821172a..9905d8a00d 100644 --- a/docs/manual/rewrite/tech.xml.fr +++ b/docs/manual/rewrite/tech.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/server-wide.xml.fr b/docs/manual/server-wide.xml.fr index 3e63206d51..bb9dd621a6 100644 --- a/docs/manual/server-wide.xml.fr +++ b/docs/manual/server-wide.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/ssl/index.xml.fr b/docs/manual/ssl/index.xml.fr index d183f26ac1..bb12a424e8 100644 --- a/docs/manual/ssl/index.xml.fr +++ b/docs/manual/ssl/index.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/ssl/ssl_compat.xml.fr b/docs/manual/ssl/ssl_compat.xml.fr index a84a058681..62afb78105 100644 --- a/docs/manual/ssl/ssl_compat.xml.fr +++ b/docs/manual/ssl/ssl_compat.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/ssl/ssl_faq.xml.fr b/docs/manual/ssl/ssl_faq.xml.fr index 671232aa71..31c58eaba4 100644 --- a/docs/manual/ssl/ssl_faq.xml.fr +++ b/docs/manual/ssl/ssl_faq.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/ssl/ssl_howto.xml.fr b/docs/manual/ssl/ssl_howto.xml.fr index f0cf498392..eaf5ce655b 100644 --- a/docs/manual/ssl/ssl_howto.xml.fr +++ b/docs/manual/ssl/ssl_howto.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/ssl/ssl_intro.xml.fr b/docs/manual/ssl/ssl_intro.xml.fr index 014db68cfb..a083b1b502 100644 --- a/docs/manual/ssl/ssl_intro.xml.fr +++ b/docs/manual/ssl/ssl_intro.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/stopping.xml.fr b/docs/manual/stopping.xml.fr index e877d37235..88e4a1024c 100644 --- a/docs/manual/stopping.xml.fr +++ b/docs/manual/stopping.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/suexec.xml.fr b/docs/manual/suexec.xml.fr index 2fcdc2b0f5..6b0d644495 100644 --- a/docs/manual/suexec.xml.fr +++ b/docs/manual/suexec.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/vhosts/details.xml.fr b/docs/manual/vhosts/details.xml.fr index 81f9bb8747..6d6c445ae4 100644 --- a/docs/manual/vhosts/details.xml.fr +++ b/docs/manual/vhosts/details.xml.fr @@ -1,4 +1,4 @@ - + @@ -24,110 +24,110 @@ Serveurs virtuels - Dtails sur le fonctionnement des serveurs virtuels + Détails sur le fonctionnement des serveurs virtuels -

    Ce document vise expliquer dans le dtail comment le serveur - HTTP Apache procde lors du choix de l'utilisation - d'un serveur virtuel en fonction d'une requte reue.

    +

    Ce document vise à expliquer dans le détail comment le serveur + HTTP Apache procède lors du choix de l'utilisation + d'un serveur virtuel en fonction d'une requête reçue.

    -

    Il est recommand de lire la documentation - Serveurs virtuels base de nom et serveurs virtuels base - d'adresse IP pour dterminer quel type de serveur virtuel nous +

    Il est recommandé de lire la documentation + Serveurs virtuels à base de nom et serveurs virtuels à base + d'adresse IP pour déterminer quel type de serveur virtuel nous convient le mieux, puis de lire les documentations serveurs virtuels base de nom ou serveurs virtuels base d'adresse IP, et enfin - d'tudier quelques exemples.

    + href="name-based.html">serveurs virtuels à base de nom ou serveurs virtuels à base d'adresse IP, et enfin + d'étudier quelques exemples.

    -

    Si vous voulez entrer dans les dtails, vous pouvez revenir vers +

    Si vous voulez entrer dans les détails, vous pouvez revenir vers cette page.

    -Support des serveurs virtuels base +Support des serveurs virtuels à base d'adresse IP -Support des serveurs virtuels base +Support des serveurs virtuels à base de nom Exemples de serveurs virtuels pour une configuration courante -Hbergement virtuel de masse configur +Hébergement virtuel de masse configuré dynamiquement
    Fichier de configuration

    Un serveur principal (main_server) contient toutes - les dfinitions qui apparaissent en dehors des sections + les définitions qui apparaissent en dehors des sections <VirtualHost>.

    Les serveurs virtuels, aussi - appels vhosts (pour virtual hosts), sont dfinis par les + appelés vhosts (pour virtual hosts), sont définis par les sections VirtualHost.

    Chaque directive VirtualHost comporte une ou plusieurs adresses et des ports optionnels.

    -

    Il est possible d'utiliser des noms d'htes dans la dfinition - d'un serveur virtuel, mais ils seront rsolus en adresses IP au - dmarrage du serveur, et si une rsolution de nom choue, cette - dfinition de serveur virtuel sera ignore. Cette mthode est par - consquent dconseille.

    +

    Il est possible d'utiliser des noms d'hôtes dans la définition + d'un serveur virtuel, mais ils seront résolus en adresses IP au + démarrage du serveur, et si une résolution de nom échoue, cette + définition de serveur virtuel sera ignorée. Cette méthode est par + conséquent déconseillée.

    L'adresse peut - tre spcifie sous la forme *, ce qui conviendra la - requte si aucun autre serveur virtuel ne possde l'adresse IP - explicite correspondant celle de la requte.

    - -

    L'adresse qui apparat dans la directive VirtualHost - peut tre associe un port optionnel. Si aucun port n'est - spcifi, il s'agit d'un port gnrique qui peut aussi tre spcifi - comme *. Le port gnrique correspond toutes les + être spécifiée sous la forme *, ce qui conviendra à la + requête si aucun autre serveur virtuel ne possède l'adresse IP + explicite correspondant à celle de la requête.

    + +

    L'adresse qui apparaît dans la directive VirtualHost + peut être associée à un port optionnel. Si aucun port n'est + spécifié, il s'agit d'un port générique qui peut aussi être spécifié + comme *. Le port générique correspond à toutes les valeurs de port.

    -

    (Il ne faut pas confondre les numros de port sur lesquels Apache - est en coute avec les numros de port spcifis dans la directive - VirtualHost ; ces derniers ne servent qu' dfinir le - serveur virtuel qui sera slectionn pour traiter la - requte. Pour dfinir les ports sur lesquels Apache est en coute, +

    (Il ne faut pas confondre les numéros de port sur lesquels Apache + est en écoute avec les numéros de port spécifiés dans la directive + VirtualHost ; ces derniers ne servent qu'à définir le + serveur virtuel qui sera sélectionné pour traiter la + requête. Pour définir les ports sur lesquels Apache est en écoute, utilisez la directive Listen).

    -

    L'ensemble des adresses (y compris les rsultats multiples - A issus des requtes DNS) est appel jeu +

    L'ensemble des adresses (y compris les résultats multiples + A issus des requêtes DNS) est appelé jeu d'adresses du serveur virtuel.

    -

    Apache fait automatiquement sa slection partir de l'en-tte +

    Apache fait automatiquement sa sélection à partir de l'en-tête HTTP Host fourni par le client, lorsque la correspondance la plus exacte du point de vue adresse IP/port a lieu pour plusieurs serveurs virtuels.

    La directive ServerName peut - apparatre en quelque endroit de la dfinition d'un serveur. - Cependant, chaque occurrence crase la prcdente (pour ce serveur). - Si aucune directive ServerName n'est spcifie, le - serveur tente de dterminer le nom du serveur partir de l'adresse + apparaître en quelque endroit de la définition d'un serveur. + Cependant, chaque occurrence écrase la précédente (pour ce serveur). + Si aucune directive ServerName n'est spécifiée, le + serveur tente de déterminer le nom du serveur à partir de l'adresse IP.

    -

    Le premier serveur virtuel base de nom apparaissant dans le - fichier de configuration pour une paire IP:port donne est - significatif car c'est lui qui sera utilis pour toutes les requtes - reues sur cette adresse IP/port et pour laquelle aucun autre - serveur virtuel ne possde un ServerName ou un ServerAlias - correspondant. Il sera aussi utilis pour toutes les connexions SSL +

    Le premier serveur virtuel à base de nom apparaissant dans le + fichier de configuration pour une paire IP:port donnée est + significatif car c'est lui qui sera utilisé pour toutes les requêtes + reçues sur cette adresse IP/port et pour laquelle aucun autre + serveur virtuel ne possède un ServerName ou un ServerAlias + correspondant. Il sera aussi utilisé pour toutes les connexions SSL si le serveur ne supporte pas l'Indication du nom du serveur.

    -

    Tous les noms spcifis au sein d'une section - VirtualHost sont traits comme un - ServerAlias (sans caractres gnriques), mais ne sont - crass par aucune directive ServerAlias.

    +

    Tous les noms spécifiés au sein d'une section + VirtualHost sont traités comme un + ServerAlias (sans caractères génériques), mais ne sont + écrasés par aucune directive ServerAlias.

    -

    Pour chaque serveur virtuel, diverses valeurs sont initialises - par dfaut. En particulier :

    +

    Pour chaque serveur virtuel, diverses valeurs sont initialisées + par défaut. En particulier :

      -
    1. Dans le cas o un serveur virtuel ne contient pas de directives +
    2. Dans le cas où un serveur virtuel ne contient pas de directives ServerAdmin, Timeout, KeepAliveTimeout, @@ -135,187 +135,187 @@ dynamiquement MaxKeepAliveRequests, ReceiveBufferSize, ou SendBufferSize, - alors la valeur de chacun de ces paramtres est hrite de celle du - serveur principal. (C'est dire, hrite de la valeur finale aprs + alors la valeur de chacun de ces paramètres est héritée de celle du + serveur principal. (C'est à dire, héritée de la valeur finale après lecture de la configuration du serveur principal.)
    3. -
    4. Les permissions par dfaut sur les rpertoires de chaque - serveur virtuel sont assembles avec celles du serveur principal. - Elles concernent galement toutes les informations de configuration - par rpertoire pour tous les modules.
    5. +
    6. Les permissions par défaut sur les répertoires de chaque + serveur virtuel sont assemblées avec celles du serveur principal. + Elles concernent également toutes les informations de configuration + par répertoire pour tous les modules.
    7. -
    8. Les configurations par serveur pour chaque module sont assembles - partir de celles du serveur principal.
    9. +
    10. Les configurations par serveur pour chaque module sont assemblées + à partir de celles du serveur principal.

    L'essentiel des valeurs de configuration des serveurs virtuels - provient de valeurs par dfaut issues du serveur principal. + provient de valeurs par défaut issues du serveur principal. Mais la position dans le fichier de configuration des directives du serveur principal n'a pas d'importance -- l'ensemble de la configuration du serveur principal est lu avant que ces valeurs par - dfaut soient appliques aux serveur virtuels. Ainsi, mme si la - dfinition d'une valeur apparat aprs celle d'un serveur virtuel, + défaut soient appliquées aux serveur virtuels. Ainsi, même si la + définition d'une valeur apparaît après celle d'un serveur virtuel, cette valeur peut affecter la definition du serveur virtuel.

    -

    Dans le cas o le serveur principal n'a pas de ServerName - ce stade, le nom de la machine sur laquelle tourne le programme - httpd est utilis sa place. Nous appellerons +

    Dans le cas où le serveur principal n'a pas de ServerName + à ce stade, le nom de la machine sur laquelle tourne le programme + httpd est utilisé à sa place. Nous appellerons jeu d'adresses du serveur principal les adresses IP - renvoyes par une rsolution DNS sur le ServerName + renvoyées par une résolution DNS sur le ServerName du serveur principal.

    -

    Pour tous les champs ServerName non dfinis, dans +

    Pour tous les champs ServerName non définis, dans le cas d'une configuration en serveur virtuel par nom, la valeur - adopte par dfaut est la premire adresse donne dans la section - VirtualHost qui dfinit le serveur virtuel.

    + adoptée par défaut est la première adresse donnée dans la section + VirtualHost qui définit le serveur virtuel.

    Si un serveur virtuel contient la valeur magique - _default_, il fonctionne sur le mme ServerName + _default_, il fonctionne sur le même ServerName que le serveur principal.

    Choix du serveur virtuel -

    la rception d'une requte, le serveur procde comme suit pour - dterminer quel serveur virtuel utiliser :

    +

    À la réception d'une requête, le serveur procède comme suit pour + déterminer quel serveur virtuel utiliser :

    Recherche de l'adresse IP -

    Lors d'une premire connexion sur une adresse/port, le serveur +

    Lors d'une première connexion sur une adresse/port, le serveur recherche toutes les directives VirtualHost qui - possdent la mme adresse IP/port.

    + possèdent la même adresse IP/port.

    S'il n'y a aucune correspondance exacte pour cette adresse/port, - la recherche s'effectue sur la valeur gnrique (*).

    + la recherche s'effectue sur la valeur générique (*).

    -

    Si aucune correspondance n'est enfin trouve, la requte sera +

    Si aucune correspondance n'est enfin trouvée, la requête sera servie par le serveur principal.

    -

    S'il existe des dfinitions VirtualHost pour - l'adresse IP, l'tape suivante consiste dterminer si nous avons - faire un serveur virtuel base de nom ou d'adresse IP.

    +

    S'il existe des définitions VirtualHost pour + l'adresse IP, l'étape suivante consiste à déterminer si nous avons à + faire à un serveur virtuel à base de nom ou d'adresse IP.

    Serveur virtuel par IP -

    Si une seule section VirtualHost prsente la +

    Si une seule section VirtualHost présente la meilleure correspondance avec la paire adresse IP/port, aucune - action n'est entreprise et la requte est - traite par le serveur virtuel qui correspond.

    + action n'est entreprise et la requête est + traitée par le serveur virtuel qui correspond.

    Serveur virtuel par nom -

    Si plusieurs sections VirtualHost prsentent la +

    Si plusieurs sections VirtualHost présentent la meilleure correspondance avec la paire adresse IP/port, le terme - "liste" dans les tapes suivantes fait rfrence la liste des + "liste" dans les étapes suivantes fait référence à la liste des serveurs virtuels qui correspondent, selon l'ordre dans lequel ils apparaissent dans le fichier de configuration.

    Si la connexion utilise SSL, si le serveur supporte l'Indication de nom de serveur, - et si la ngociation du client SSL inclut l'extension TLS dans le - nom d'hte requis, alors ce nom d'hte sera utilis par la suite, tout - comme un en-tte Host: aurait t utilis dans le cas - d'une connexion non-SSL. Si ces conditions ne sont pas runies, le - premier serveur virtuel base de nom dont l'adresse correspond sera - utilis pour les connexions SSL. Ceci est important car c'est le - serveur virtuel qui dtermine quel certificat le serveur va utiliser + et si la négociation du client SSL inclut l'extension TLS dans le + nom d'hôte requis, alors ce nom d'hôte sera utilisé par la suite, tout + comme un en-tête Host: aurait été utilisé dans le cas + d'une connexion non-SSL. Si ces conditions ne sont pas réunies, le + premier serveur virtuel à base de nom dont l'adresse correspond sera + utilisé pour les connexions SSL. Ceci est important car c'est le + serveur virtuel qui détermine quel certificat le serveur va utiliser pour la connexion.

    -

    Si la requte contient un en-tte Host:, on +

    Si la requête contient un en-tête Host:, on recherche dans la liste le premier serveur virtuel dont le ServerName ou le ServerAlias correspond, - et c'est celui-ci qui va traiter la requte. Un en-tte - Host: peut comporter un numro de port mais Apache - l'ignore systmatiquement et utilise toujours le - port sur lequel il a effectivement reu la requte.

    + et c'est celui-ci qui va traiter la requête. Un en-tête + Host: peut comporter un numéro de port mais Apache + l'ignore systématiquement et utilise toujours le + port sur lequel il a effectivement reçu la requête.

    Le premier serveur virtuel du fichier de configuration qui - possde l'adresse spcifie est prioritaire et intercepte toutes les - requtes destination d'un nom de serveur inconnu, ou toute requte - sans en-tte Host: (comme les requtes HTTP/1.0).

    + possède l'adresse spécifiée est prioritaire et intercepte toutes les + requêtes à destination d'un nom de serveur inconnu, ou toute requête + sans en-tête Host: (comme les requêtes HTTP/1.0).

    Connexions persistantes -

    La recherche par adresse IP dcrite ci-avant n'est faite +

    La recherche par adresse IP décrite ci-avant n'est faite qu'une fois pour chaque session TCP/IP, alors que la - recherche par nom est ralise pour chaque requte au + recherche par nom est réalisée pour chaque requête au cours d'une connexion persistante (KeepAlive). En d'autres termes, - il est possible pour un client de faire des requtes sur - diffrents serveurs virtuels par nom, au cours d'une unique + il est possible pour un client de faire des requêtes sur + différents serveurs virtuels par nom, au cours d'une unique connexion persistante.

    URI absolu -

    Au cas o l'URI de la requte est absolu, et que son nom de +

    Au cas où l'URI de la requête est absolu, et que son nom de serveur et son port correspondent au serveur principal (ou l'un - des serveurs virtuels configurs), et qu'ils correspondent - l'adresse et au port de la requte, alors l'URI est amput - de son prfixe protocole/nom de serveur/port et trait par le + des serveurs virtuels configurés), et qu'ils correspondent + à l'adresse et au port de la requête, alors l'URI est amputé + de son préfixe protocole/nom de serveur/port et traité par le serveur correspondant (principal ou virtuel). Si cette correspondance - n'existe pas, l'URI reste inchang et la requte est considre - comme une requte d'un serveur mandataire (proxy).

    + n'existe pas, l'URI reste inchangé et la requête est considérée + comme une requête d'un serveur mandataire (proxy).

    Observations
      -
    • La slection d'un serveur virtuel en fonction de son nom est - un processus qui intervient aprs la slection par le serveur du +
    • La sélection d'un serveur virtuel en fonction de son nom est + un processus qui intervient après la sélection par le serveur du serveur virtuel qui correspond le mieux du point de vue adresse IP/port.
    • -
    • Si vous ne tenez pas compte de l'adresse IP laquelle le - client s'est connect, indiquez un caractre "*" comme adresse - pour tous les serveurs virtuels, et la slection du serveur - virtuel en fonction du nom s'appliquera alors tous les serveurs - virtuels dfinis.
    • +
    • Si vous ne tenez pas compte de l'adresse IP à laquelle le + client s'est connecté, indiquez un caractère "*" comme adresse + pour tous les serveurs virtuels, et la sélection du serveur + virtuel en fonction du nom s'appliquera alors à tous les serveurs + virtuels définis.
    • -
    • Les vrifications sur ServerName et +
    • Les vérifications sur ServerName et ServerAlias ne sont jamais - ralises pour les serveurs virtuels par IP.
    • + réalisées pour les serveurs virtuels par IP.
    • Seul l'ordre des serveurs virtuels par nom - pour une adresse donne a une importance. Le serveur virtuel - par nom qui est prsent en premier dans la configuration se - voit attribu la priorit la plus haute pour les requtes + pour une adresse donnée a une importance. Le serveur virtuel + par nom qui est présent en premier dans la configuration se + voit attribué la priorité la plus haute pour les requêtes arrivant sur son jeu d'adresses IP.
    • -
    • Le numro de port contenu dans l'en-tte Host: n'est jamais utilis +
    • Le numéro de port contenu dans l'en-tête Host: n'est jamais utilisé pour les tests de correspondances. Apache ne prend en compte - que le numro de port sur lequel le client a envoy la requte.
    • + que le numéro de port sur lequel le client a envoyé la requête. -
    • Si deux serveurs virtuels partagent la mme adresse, la - slection se fera implicitement sur le nom. Il s'agit d'une - nouvelle fonctionnalit de la version 2.3.11.
    • +
    • Si deux serveurs virtuels partagent la même adresse, la + sélection se fera implicitement sur le nom. Il s'agit d'une + nouvelle fonctionnalité de la version 2.3.11.
    • -
    • Le serveur principal ne sert les requtes que - lorsque l'adresse IP et le port demands par le client ne - correspondent aucun serveur virtuel (y compris un serveur +
    • Le serveur principal ne sert les requêtes que + lorsque l'adresse IP et le port demandés par le client ne + correspondent à aucun serveur virtuel (y compris un serveur virtuel *). En d'autres termes, le serveur principal n'est utile que pour les combinaisons adresse/port - non spcifies (sauf quand un serveur virtuel _default_ + non spécifiées (sauf quand un serveur virtuel _default_ correspond au port).
    • Il ne faut jamais employer de noms DNS dans des directives VirtualHost, car cela oblige le serveur a s'appuyer - sur le DNS au moment du dmarrage. De plus, vous vous exposez - des problmes de scurit si vous n'avez pas la matrise du - DNS pour la totalit de vos domaines. Voir la documentation + sur le DNS au moment du démarrage. De plus, vous vous exposez + à des problèmes de sécurité si vous n'avez pas la maîtrise du + DNS pour la totalité de vos domaines. Voir la documentation disponible ici, ainsi que - les deux points prciss ci-aprs.
    • + les deux points précisés ci-après.
    • Un nom de serveur ServerName devrait toujours - tre indiqu pour chaque serveur virtuel. Sans cela, une - rsolution DNS est ncessaire pour chaque serveur virtuel.
    • + être indiqué pour chaque serveur virtuel. Sans cela, une + résolution DNS est nécessaire pour chaque serveur virtuel.
    @@ -323,17 +323,17 @@ dynamiquement
    Trucs et astuces -

    En plus des points voqus sur la page des - problmes lis au DNS, - voici quelques points intressants :

    +

    En plus des points évoqués sur la page des + problèmes liés au DNS, + voici quelques points intéressants :

      -
    • Toujours positionner les dfinitions relatives au serveur - principal avant toute dfinition VirtualHost. - (Ceci amliore grandement la lisibilit de la configuration - -- la manire dont la configuration est interprte aprs la - lecture des fichiers ne met pas en vidence le fait que les - dfinitions positionnes avant et surtout aprs les serveurs +
    • Toujours positionner les définitions relatives au serveur + principal avant toute définition VirtualHost. + (Ceci améliore grandement la lisibilité de la configuration + -- la manière dont la configuration est interprétée après la + lecture des fichiers ne met pas en évidence le fait que les + définitions positionnées avant et surtout après les serveurs virtuels peuvent impacter le fonctionnement de tous les serveurs virtuels.)
    • diff --git a/docs/manual/vhosts/examples.xml.fr b/docs/manual/vhosts/examples.xml.fr index 626fbbfdef..ee31d5bf01 100644 --- a/docs/manual/vhosts/examples.xml.fr +++ b/docs/manual/vhosts/examples.xml.fr @@ -1,4 +1,4 @@ - + @@ -28,10 +28,10 @@ -

      Le but de ce document est d'essayer de rpondre aux questions - les plus rpandues sur la configuration des serveurs virtuels. - Les scnarios prsents ici se rencontrent quand plusieurs - serveurs Webs doivent tourner sur une seule et mme machine au +

      Le but de ce document est d'essayer de répondre aux questions + les plus répandues sur la configuration des serveurs virtuels. + Les scénarios présentés ici se rencontrent quand plusieurs + serveurs Webs doivent tourner sur une seule et même machine au moyen de serveurs virtuels par nom ou par IP.

      @@ -40,22 +40,22 @@
      Fonctionnement de plusieurs serveurs virtuels par nom sur une seule adresse IP. -

      Votre serveur possde plusieurs noms d'hte qui correspondent une seule - adresse IP, et vous souhaitez des rponses diffrentes si on demande +

      Votre serveur possède plusieurs noms d'hôte qui correspondent à une seule + adresse IP, et vous souhaitez des réponses différentes si on demande www.example.com ou www.example.org.

      Note :

      La configuration de serveurs virtuels sous Apache ne provoque pas leur apparition magique dans la configuration du DNS. Il faut que leurs noms soient - dfinis dans le DNS, et qu'ils y soient rsolus sur l'adresse IP + définis dans le DNS, et qu'ils y soient résolus sur l'adresse IP du serveur, faute de quoi personne ne pourra visiter votre site Web. - Il est possible d'ajouter des entres dans le fichier + Il est possible d'ajouter des entrées dans le fichier hosts pour tests locaux, mais qui ne fonctionneront - que sur la machine possdant ces entres.

      + que sur la machine possédant ces entrées.

      -# Apache doit couter sur le port 80 +# Apache doit écouter sur le port 80 Listen 80 <VirtualHost *:80> DocumentRoot "/www/example1" @@ -73,37 +73,37 @@ Listen 80 -

      Les astrisques correspondent toutes les adresses, si bien que - le serveur principal ne rpondra jamais aucune requte. Comme le +

      Les astérisques correspondent à toutes les adresses, si bien que + le serveur principal ne répondra jamais à aucune requête. Comme le serveur virtuel ServerName www.example.com se trouve en premier dans le fichier - de configuration, il a la plus grande priorit et peut tre vu - comme serveur par dfaut ou primaire ; - ce qui signifie que toute requte reue ne correspondant aucune + de configuration, il a la plus grande priorité et peut être vu + comme serveur par défaut ou primaire ; + ce qui signifie que toute requête reçue ne correspondant à aucune des directives ServerName sera servie par ce premier VirtualHost.

      -

      La configuration ci-dessus correspond ce que l'on souhaite pour - la plupart des serveurs virtuels base de nom. Il faudra cependant - utiliser une configuration diffrente si vous souhaitez servir un - contenu diffrent en fonction de l'adresse IP ou du port.

      +

      La configuration ci-dessus correspond à ce que l'on souhaite pour + la plupart des serveurs virtuels à base de nom. Il faudra cependant + utiliser une configuration différente si vous souhaitez servir un + contenu différent en fonction de l'adresse IP ou du port.

      Note :

      Vous pouvez remplacer * - par une adresse IP du systme. Le serveur virtuel concern - ne sera alors slectionn que pour les requtes HTTP vers + par une adresse IP du système. Le serveur virtuel concerné + ne sera alors sélectionné que pour les requêtes HTTP vers cette adresse IP.

      -

      En gnral, il est commode d'utiliser * sur - les systmes dont l'adresse IP n'est pas constante - par - exemple, pour des serveurs dont l'adresse IP est attribue - dynamiquement par le FAI, et o le DNS est gr au moyen +

      En général, il est commode d'utiliser * sur + les systèmes dont l'adresse IP n'est pas constante - par + exemple, pour des serveurs dont l'adresse IP est attribuée + dynamiquement par le FAI, et où le DNS est géré au moyen d'un DNS dynamique quelconque. Comme * signifie n'importe quelle adresse, cette configuration - fonctionne sans devoir tre modifie quand l'adresse IP du - systme est modifie.

      + fonctionne sans devoir être modifiée quand l'adresse IP du + système est modifiée.

      @@ -112,15 +112,15 @@ Listen 80 d'une seule adresse IP. - Note :

      Toutes les techniques prsentes ici - peuvent tre tendues un plus grand nombre d'adresses IP.

      + Note :

      Toutes les techniques présentées ici + peuvent être étendues à un plus grand nombre d'adresses IP.

      Le serveur a deux adresses IP. Sur l'une (172.20.30.40), le serveur "principal" - server.example.com doit rpondre, et sur l'autre + server.example.com doit répondre, et sur l'autre (172.20.30.50), deux serveurs virtuels (ou plus) - rpondront.

      + répondront.

      Listen 80 @@ -144,28 +144,28 @@ DocumentRoot "/www/mainserver" </VirtualHost> -

      Toute requte arrivant sur une autre adresse que +

      Toute requête arrivant sur une autre adresse que 172.20.30.50 sera servie par le serveur principal. - Les requtes vers 172.20.30.50 avec un nom de serveur - inconnu, ou sans en-tte Host:, seront servies par + Les requêtes vers 172.20.30.50 avec un nom de serveur + inconnu, ou sans en-tête Host:, seront servies par www.example.com.

    -
    Servir le mme contenu sur des - adresses IP diffrentes (telle qu'une adresse interne et une + <section id="intraextra"><title>Servir le même contenu sur des + adresses IP différentes (telle qu'une adresse interne et une externe).

    La machine serveur dispose de deux adresses IP (192.168.1.1 et 172.20.30.40). Cette - machine est place la fois sur le rseau interne (l'Intranet) - et le rseau externe (Internet). Sur Internet, le nom + machine est placée à la fois sur le réseau interne (l'Intranet) + et le réseau externe (Internet). Sur Internet, le nom server.example.com pointe vers l'adresse externe - (172.20.30.40), mais sur le rseau interne, ce mme + (172.20.30.40), mais sur le réseau interne, ce même nom pointe vers l'adresse interne (192.168.1.1).

    -

    Le serveur peut tre configur pour rpondre de la mme manire - aux requtes internes et externes, au moyen d'une seule section +

    Le serveur peut être configuré pour répondre de la même manière + aux requêtes internes et externes, au moyen d'une seule section VirtualHost.

    @@ -176,30 +176,30 @@ DocumentRoot "/www/mainserver" </VirtualHost> -

    Ainsi, les requtes en provenance de chacun des deux rseaux - seront servies par le mme Ainsi, les requêtes en provenance de chacun des deux réseaux + seront servies par le même VirtualHost.

    - Note :

    Sur le rseau interne, il est possible + Note :

    Sur le réseau interne, il est possible d'utiliser le nom raccourci server au lieu du nom complet server.example.com.

    -

    Notez galement que dans l'exemple prcdent, vous pouvez +

    Notez également que dans l'exemple précédent, vous pouvez remplacer la liste des adresses IP par des * afin - que le serveur rponde de la mme manire sur toutes ses + que le serveur réponde de la même manière sur toutes ses adresses.

    -
    Servir diffrents sites sur diffrents + <section id="port"><title>Servir différents sites sur différents ports. -

    Vous disposez de plusieurs domaines pointant sur la mme adresse - IP et vous voulez galement servir de multiples ports. L'exemple - suivant montre que la slection en fonction du nom intervient aprs - la slection de la meilleure correspondance du point de vue adresse +

    Vous disposez de plusieurs domaines pointant sur la même adresse + IP et vous voulez également servir de multiples ports. L'exemple + suivant montre que la sélection en fonction du nom intervient après + la sélection de la meilleure correspondance du point de vue adresse IP/port.

    @@ -229,7 +229,7 @@ Listen 8080
    -
    Hbergement virtuel bas sur IP +
    Hébergement virtuel basé sur IP

    Le serveur dispose de deux adresses IP (172.20.30.40 et 172.20.30.50) correspondant respectivement aux noms @@ -249,20 +249,20 @@ Listen 80 </VirtualHost> -

    Les requtes provenant d'adresses non spcifies dans l'une des +

    Les requêtes provenant d'adresses non spécifiées dans l'une des directives <VirtualHost> (comme pour - localhost par exemple) seront diriges vers le serveur + localhost par exemple) seront dirigées vers le serveur principal, s'il en existe un.

    -
    Hbergements virtuels mixtes bass sur + <section id="ipport"><title>Hébergements virtuels mixtes basés sur les ports et sur les IP

    Le serveur dispose de deux adresses IP (172.20.30.40 et 172.20.30.50) correspondant respectivement aux noms www.example.com et www.example.org. - Pour chacun d'eux, nous voulons un hbergement sur les ports 80 + Pour chacun d'eux, nous voulons un hébergement sur les ports 80 et 8080.

    @@ -294,12 +294,12 @@ Listen 172.20.30.50:8080
    -
    Hbergements virtuels mixtes bas sur + <section id="mixed"><title>Hébergements virtuels mixtes basé sur les noms et sur IP -

    Toute adresse indique comme argument d'une section VirtualHost +

    Toute adresse indiquée comme argument d'une section VirtualHost et n'apparaissant dans aucun autre serveur virtuel, fait de cette - section un serveur virtuel slectionnable uniquement en fonction de + section un serveur virtuel sélectionnable uniquement en fonction de son adresse IP.

    @@ -333,18 +333,18 @@ Listen 80
    -
    Utilisation simultane de + <section id="proxy"><title>Utilisation simultanée de <code>Virtual_host</code> et de mod_proxy

    L'exemple suivant montre comment une machine peut mandater un serveur virtuel fonctionnant sur le serveur d'une autre machine. - Dans cet exemple, un serveur virtuel de mme nom est configur sur - une machine l'adresse 192.168.111.2. La directive + Dans cet exemple, un serveur virtuel de même nom est configuré sur + une machine à l'adresse 192.168.111.2. La directive ProxyPreserveHost On est - employe pour permette au nom de domaine d'tre prserv lors du - transfert, au cas o plusieurs noms de domaines cohabitent sur - une mme machine.

    + employée pour permette au nom de domaine d'être préservé lors du + transfert, au cas où plusieurs noms de domaines cohabitent sur + une même machine.

    <VirtualHost *:*> @@ -363,9 +363,9 @@ Listen 80
    Serveurs virtuels <code>_default_</code> pour tous les ports -

    Exemple de capture de toutes les requtes manant - d'adresses IP ou de ports non connus, c'est--dire, d'un - couple adresse/port non trait par aucun autre serveur virtuel.

    +

    Exemple de capture de toutes les requêtes émanant + d'adresses IP ou de ports non connus, c'est-à-dire, d'un + couple adresse/port non traité par aucun autre serveur virtuel.

    <VirtualHost _default_:*> @@ -374,30 +374,30 @@ Listen 80

    L'utilisation d'un tel serveur virtuel avec un joker pour le - port empche de manire efficace qu'une requte n'atteigne le + port empêche de manière efficace qu'une requête n'atteigne le serveur principal.

    -

    Un serveur virtuel par dfaut ne servira jamais une requte - qui est envoye vers un couple adresse/port utilise par un - serveur virtuel par nom. Si la requte contient un en-tte +

    Un serveur virtuel par défaut ne servira jamais une requête + qui est envoyée vers un couple adresse/port utilisée par un + serveur virtuel par nom. Si la requête contient un en-tête Host: inconnu, ou si celui-ci est absent, elle sera toujours servie par le serveur virtuel primaire par nom - (celui correspondant ce couple adresse/port trouv en premier + (celui correspondant à ce couple adresse/port trouvé en premier dans le fichier de configuration).

    Vous pouvez utiliser une directive AliasMatch ou RewriteRule afin de - rcrire une requte pour une unique page d'information (ou pour + réécrire une requête pour une unique page d'information (ou pour un script).

    Serveurs virtuels - <code>_default_</code> pour des ports diffrents + _default_ pour des ports différents -

    La configuration est similaire l'exemple prcdent, mais - le serveur coute sur plusieurs ports et un second serveur virtuel - _default_ pour le port 80 est ajout.

    +

    La configuration est similaire à l'exemple précédent, mais + le serveur écoute sur plusieurs ports et un second serveur virtuel + _default_ pour le port 80 est ajouté.

    <VirtualHost _default_:80> @@ -411,17 +411,17 @@ Listen 80 </VirtualHost> -

    Le serveur virtuel par dfaut dfini pour le port 80 (il doit - imprativement tre plac avant un autre serveur virtuel par - dfaut traitant tous les ports grce au joker *) capture toutes - les requtes envoyes sur une adresse IP non spcifie. Le - serveur principal n'est jamais utilis pour servir une requte.

    +

    Le serveur virtuel par défaut défini pour le port 80 (il doit + impérativement être placé avant un autre serveur virtuel par + défaut traitant tous les ports grâce au joker *) capture toutes + les requêtes envoyées sur une adresse IP non spécifiée. Le + serveur principal n'est jamais utilisé pour servir une requête.

    Serveurs virtuels <code>_default_</code> pour un seul port -

    Nous voulons crer un serveur virtuel par dfaut seulement +

    Nous voulons créer un serveur virtuel par défaut seulement pour le port 80.

    @@ -431,13 +431,13 @@ Listen 80 </VirtualHost> -

    Une requte vers une adresse non spcifie sur le port 80 - sera servie par le serveur virtuel par dfaut, et toute autre - requte vers une adresse et un port non spcifis sera servie +

    Une requête vers une adresse non spécifiée sur le port 80 + sera servie par le serveur virtuel par défaut, et toute autre + requête vers une adresse et un port non spécifiés sera servie par le serveur principal.

    -

    L'utilisation du caractre gnrique * dans la - dclaration d'un serveur virtuel l'emporte sur +

    L'utilisation du caractère générique * dans la + déclaration d'un serveur virtuel l'emporte sur _default_.

    @@ -449,8 +449,8 @@ Listen 80

    Le serveur virtuel par nom avec le nom de domaine www.example.org (de notre exemple par nom) devrait obtenir sa propre adresse IP. Pendant la - phase de migration, il est possible d'viter les problmes avec - les noms de serveurs et autres serveurs mandataires qui mmorisent + phase de migration, il est possible d'éviter les problèmes avec + les noms de serveurs et autres serveurs mandataires qui mémorisent les vielles adresses IP pour les serveurs virtuels par nom.
    La solution est simple, car il suffit d'ajouter la nouvelle adresse IP (172.20.30.50) dans la directive @@ -475,7 +475,7 @@ DocumentRoot "/www/example1" </VirtualHost> -

    Le serveur virtuel peut maintenant tre joint par la nouvelle +

    Le serveur virtuel peut maintenant être joint par la nouvelle adresse (comme un serveur virtuel par IP) et par l'ancienne adresse (comme un serveur virtuel par nom).

    @@ -484,15 +484,15 @@ DocumentRoot "/www/example1"
    Utilisation de la directive <code>ServerPath</code> -

    Dans le cas o vous disposez de deux serveurs virtuels par nom, - le client doit transmettre un en-tte Host: correct - pour dterminer le serveur concern. Les vieux clients HTTP/1.0 - n'envoient pas un tel en-tte et Apache n'a aucun indice pour - connatre le serveur virtuel devant tre joint (il sert la - requte partir d'un serveur virtuel primaire). Dans un soucis - de prserver la compatibilit descendante, il suffit de crer - un serveur virtuel primaire charg de retourner une page contenant - des liens dont les URLs auront un prfixe identifiant les serveurs +

    Dans le cas où vous disposez de deux serveurs virtuels par nom, + le client doit transmettre un en-tête Host: correct + pour déterminer le serveur concerné. Les vieux clients HTTP/1.0 + n'envoient pas un tel en-tête et Apache n'a aucun indice pour + connaître le serveur virtuel devant être joint (il sert la + requête à partir d'un serveur virtuel primaire). Dans un soucis + de préserver la compatibilité descendante, il suffit de créer + un serveur virtuel primaire chargé de retourner une page contenant + des liens dont les URLs auront un préfixe identifiant les serveurs virtuels par nom.

    @@ -523,22 +523,22 @@ DocumentRoot "/www/example1" </VirtualHost> -

    cause de la directive - ServerPath, une requte sur +

    À cause de la directive + ServerPath, une requête sur une URL http://www.sub1.domain.tld/sub1/ est toujours servie par le serveur sub1-vhost.
    - Une requte sur une URL http://www.sub1.domain.tld/ n'est - servie par le serveur sub1-vhost que si le client envoie un en-tte - Host: correct. Si aucun en-tte Host: - n'est transmis, le serveur primaire sera utilis.

    -

    Notez qu'il y a une singularit : une requte sur - http://www.sub2.domain.tld/sub1/ est galement servie - par le serveur sub1-vhost si le client n'envoie pas d'en-tte + Une requête sur une URL http://www.sub1.domain.tld/ n'est + servie par le serveur sub1-vhost que si le client envoie un en-tête + Host: correct. Si aucun en-tête Host: + n'est transmis, le serveur primaire sera utilisé.

    +

    Notez qu'il y a une singularité : une requête sur + http://www.sub2.domain.tld/sub1/ est également servie + par le serveur sub1-vhost si le client n'envoie pas d'en-tête Host:.

    Les directives RewriteRule - sont employes pour s'assurer que le client qui envoie un en-tte + sont employées pour s'assurer que le client qui envoie un en-tête Host: correct puisse utiliser d'autres variantes d'URLs, - c'est--dire avec ou sans prfixe d'URL.

    + c'est-à-dire avec ou sans préfixe d'URL.

    diff --git a/docs/manual/vhosts/fd-limits.xml.fr b/docs/manual/vhosts/fd-limits.xml.fr index 66c71f3bb7..eac340ae18 100644 --- a/docs/manual/vhosts/fd-limits.xml.fr +++ b/docs/manual/vhosts/fd-limits.xml.fr @@ -1,4 +1,4 @@ - + @@ -28,51 +28,51 @@ -

    Quand de nombreux serveurs virtuels sont crs, Apache peut - dpasser les limites en descripteurs de fichiers ('file descriptors', - galement appels gestionnaires de fichiers) si chacun +

    Quand de nombreux serveurs virtuels sont créés, Apache peut + dépasser les limites en descripteurs de fichiers ('file descriptors', + également appelés gestionnaires de fichiers) si chacun des serveurs virtuels utilise ses propres fichiers journaux. Le - nombre total de descripteurs de fichiers utiliss par Apache est + nombre total de descripteurs de fichiers utilisés par Apache est d'un par fichier journal, un pour chacune des autres directives de fichiers journaux, plus un nombre constant compris entre 10 et 20 - pour son fonctionnement interne. Les systmes d'exploitation Unix + pour son fonctionnement interne. Les systèmes d'exploitation Unix limitent le nombre de descripteurs de fichiers utilisables par processus ; une valeur courante pour cette limite est de 64, et - cette valeur peut le plus souvent tre augmente.

    + cette valeur peut le plus souvent être augmentée.

    -

    Apache tente d'accrotre cette valeur limite si ncessaire, mais +

    Apache tente d'accroître cette valeur limite si nécessaire, mais sans y parvenir dans les cas suivants :

      -
    1. Le systme d'exploitation ne permet pas l'utilisation d'appels - systmes setrlimit().
    2. +
    3. Le système d'exploitation ne permet pas l'utilisation d'appels + systèmes setrlimit().
    4. L'appel setrlimit(RLIMIT_NOFILE) ne fonctionne pas - sur votre systme d'exploitation (c'est le cas sous Solaris 2.3).
    5. + sur votre système d'exploitation (c'est le cas sous Solaris 2.3). -
    6. Le nombre de descripteurs de fichiers ncessaires Apache - dpasse la limite physique du matriel.
    7. +
    8. Le nombre de descripteurs de fichiers nécessaires à Apache + dépasse la limite physique du matériel.
    9. -
    10. Le systme impose d'autres limites sur l'utilisation des +
    11. Le système impose d'autres limites sur l'utilisation des descripteurs de fichiers, comme par exemple une limite sur les flux stdio, utilisables uniquement sur les descripteurs de - fichiers infrieurs 256. (sous Solaris 2).
    12. + fichiers inférieurs à 256. (sous Solaris 2).
    -

    En cas de problme, Vous pouvez :

    +

    En cas de problème, Vous pouvez :

      -
    • Rduire le nombre de fichiers journaux, en ne spcifiant +
    • Réduire le nombre de fichiers journaux, en ne spécifiant aucun fichier journal dans les sections VirtualHost, en donc en envoyant les informations aux fichiers journaux du - serveur principal (Voir clatement des + serveur principal (Voir Éclatement des fichiers journaux ci-dessous pour plus d'informations sur - cette possibilit).
    • + cette possibilité).
    • - Dans les cas 1 ou 2 (voqus ci-dessus), augmentez la limite sur - les descripteurs de fichiers avant le dmarrage d'Apache, au + Dans les cas 1 ou 2 (évoqués ci-dessus), augmentez la limite sur + les descripteurs de fichiers avant le démarrage d'Apache, au moyen d'un script comme @@ -86,55 +86,55 @@
    -
    clatement des fichiers journaux +
    Éclatement des fichiers journaux -

    Lorsque vous choisissez d'enregistrer les informations manant de -plusieurs serveurs virtuels dans un mme fichier journal, vous voudrez -ensuite pouvoir scinder ces informations des fins de statistiques, par -exemple, sur les diffrents serveurs virtuels. Il est possible de procder -de la manire suivante :

    +

    Lorsque vous choisissez d'enregistrer les informations émanant de +plusieurs serveurs virtuels dans un même fichier journal, vous voudrez +ensuite pouvoir scinder ces informations à des fins de statistiques, par +exemple, sur les différents serveurs virtuels. Il est possible de procéder +de la manière suivante :

    -

    Tout d'abord, vous devez ajouter le nom du serveur virtuel chaque -entre du journal. Ceci se paramtre au moyen de la directive +

    Tout d'abord, vous devez ajouter le nom du serveur virtuel à chaque +entrée du journal. Ceci se paramètre au moyen de la directive LogFormat et de la -variable %v. Ajoutez cette variable au dbut de la chane -de dfinition du format de journalisations :

    +variable %v. Ajoutez cette variable au début de la chaîne +de définition du format de journalisations :

    LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost CustomLog logs/multiple_vhost_log vhost -

    Cette configuration va provoquer la cration d'un fichier de +

    Cette configuration va provoquer la création d'un fichier de journalisation au format standard (CLF : 'Common Log Format'), mais dont -chaque ligne dbutera par le nom canonique du serveur virtuel (spcifi +chaque ligne débutera par le nom canonique du serveur virtuel (spécifié par la directive ServerName). (Voir mod_log_config pour d'autres informations sur la personnalisation des fichiers journaux.)

    -

    Au moment de sparer les informations du fichier journal en un fichier +

    Au moment de séparer les informations du fichier journal en un fichier par serveur virtuel, le programme -split-logfile peut tre -utilis. Ce programme peut tre trouv dans le rpertoire +split-logfile peut être +utilisé. Ce programme peut être trouvé dans le répertoire support de la distribution d'Apache.

    -

    Excutez ce programme au moyen de la commande :

    +

    Exécutez ce programme au moyen de la commande :

    split-logfile < /logs/multiple_vhost_log -

    Une fois excut avec le nom du fichier contenant tous les journaux, -ce programme va gnrer un fichier pour chacun des serveurs virtuels -qui apparat dans le fichier d'entre. Chaque fichier en sortie est -nomm nomduserveur.log.

    +

    Une fois exécuté avec le nom du fichier contenant tous les journaux, +ce programme va générer un fichier pour chacun des serveurs virtuels +qui apparaît dans le fichier d'entrée. Chaque fichier en sortie est +nommé nomduserveur.log.

    diff --git a/docs/manual/vhosts/index.xml.fr b/docs/manual/vhosts/index.xml.fr index 3eedbf5e77..6c0b0a0f8b 100644 --- a/docs/manual/vhosts/index.xml.fr +++ b/docs/manual/vhosts/index.xml.fr @@ -1,4 +1,4 @@ - + @@ -29,25 +29,25 @@ -

    Le principe des Serveurs Virtuels consiste +

    Le principe des Serveurs Virtuels consiste à faire fonctionner un ou plusieurs serveurs Web (comme www.company1.example.com et www.company2.example.com) - sur une mme machine. Les serveurs virtuels peuvent tre soit - "par-IP" o une adresse IP est - attribue pour chaque serveur Web, soit "par-nom" o plusieurs noms de domaine se ctoient sur - des mmes adresses IP. L'utilisateur final ne peroit pas - qu'en fait il s'agit d'un mme serveur physique.

    - -

    Apache a t le prcurseur des serveurs proposant cette - mthode de serveurs virtuels bass sur les adresses IP. Ses + sur une même machine. Les serveurs virtuels peuvent être soit + "par-IP" où une adresse IP est + attribuée pour chaque serveur Web, soit "par-nom" où plusieurs noms de domaine se côtoient sur + des mêmes adresses IP. L'utilisateur final ne perçoit pas + qu'en fait il s'agit d'un même serveur physique.

    + +

    Apache a été le précurseur des serveurs proposant cette + méthode de serveurs virtuels basés sur les adresses IP. Ses versions 1.1 et suivantes proposent les deux - mthodes de serveurs virtuels : par-IP et par-nom. Cette - deuxime mthode est parfois galement appele host-based + méthodes de serveurs virtuels : par-IP et par-nom. Cette + deuxième méthode est parfois également appelée host-based ou serveur virtuel non-IP.

    Vous trouverez ci-dessous une liste documentaire qui vous - expliquera en dtails le fonctionnement du support des serveurs + expliquera en détails le fonctionnement du support des serveurs virtuels par le serveur HTTP Apache.

    @@ -57,8 +57,8 @@ Serveurs virtuels par-IP Exemples de serveurs virtuels Limites des descripteurs de fichiers -Hbergement virtuel en masse -Dtails sur les critres de choix du serveur +Hébergement virtuel en masse +Détails sur les critères de choix du serveur
    Support des serveurs virtuels @@ -73,8 +73,8 @@ (ou, trop de fichiers journaux)
  • Configuration dynamique en masse de Serveurs Virtuels
  • -
  • Explication approfondie des critres - de slection d'un Serveur Virtuel
  • +
  • Explication approfondie des critères + de sélection d'un Serveur Virtuel
  • @@ -89,7 +89,7 @@
  • ServerPath
  • -

    Pour vrifier et analyser la configuration de vos serveurs +

    Pour vérifier et analyser la configuration de vos serveurs virtuels, vous pouvez utiliser l'argument -S sur la ligne de commande.

    @@ -103,9 +103,9 @@ httpd.exe -S -

    Cette commande affichera dans le dtail comment Apache a - trait son fichier de configuration. Les erreurs de configuration - peuvent tre corriges par l'examen attentif des adresses IP et +

    Cette commande affichera dans le détail comment Apache a + traité son fichier de configuration. Les erreurs de configuration + peuvent être corrigées par l'examen attentif des adresses IP et des noms de serveurs. (Consultez la documentation du programme httpd pour les autres arguments de la ligne de commande)

    diff --git a/docs/manual/vhosts/ip-based.xml.fr b/docs/manual/vhosts/ip-based.xml.fr index d941a3709d..578989aaca 100644 --- a/docs/manual/vhosts/ip-based.xml.fr +++ b/docs/manual/vhosts/ip-based.xml.fr @@ -1,4 +1,4 @@ - + @@ -30,64 +30,64 @@ Support Apache des serveurs virtuels par nom -
    Systme requis +
    Système requis

    Comme l'indique le terme par IP, le serveur - doit disposer de diffrentes paires adresses IP/port pour chaque - serveur virtuel par IP. La machine peut possder - plusieurs connexions physiques au rseau, ou utiliser des - interfaces virtuelles qui sont supportes par la plupart des - systmes d'exploitation modernes (Consultez la documentation des - systmes d'exploitation pour plus de dtails, notamment les "alias + doit disposer de différentes paires adresses IP/port pour chaque + serveur virtuel par IP. La machine peut posséder + plusieurs connexions physiques au réseau, ou utiliser des + interfaces virtuelles qui sont supportées par la plupart des + systèmes d'exploitation modernes (Consultez la documentation des + systèmes d'exploitation pour plus de détails, notamment les "alias IP" et la commande "ifconfig" pour les activer), et/ou utiliser - plusieurs numros de port.

    + plusieurs numéros de port.

    Selon la terminologie du serveur HTTP Apache, l'utilisation d'une - seule adresse IP avec plusieurs ports TCP s'apparente aussi de - l'hbergement virtuel bas sur IP.

    + seule adresse IP avec plusieurs ports TCP s'apparente aussi à de + l'hébergement virtuel basé sur IP.

    Comment configurer Apache -

    Il y a deux manires de configurer Apache pour le support de +

    Il y a deux manières de configurer Apache pour le support de multiples serveurs virtuels. Il suffit soit de faire tourner un - processus rsident httpd pour chaque nom de - domaine, soit de faire tourner un unique processus rsident qui - gre tous les serveurs virtuels.

    + processus résident httpd pour chaque nom de + domaine, soit de faire tourner un unique processus résident qui + gère tous les serveurs virtuels.

    -

    Utilisez des processus rsidents multiples lorsque :

    +

    Utilisez des processus résidents multiples lorsque :

      -
    • il y a des problmes de rpartition de scurit, tels +
    • il y a des problèmes de répartition de sécurité, tels qu'une entreprise1 ne souhaite que personne d'une entreprise2 - ne puisse lire ses donnes except via le Web. Dans ce cas, - vous aurez besoin de deux processus rsidents, chacun fonctionnant - avec des paramtres User, + ne puisse lire ses données excepté via le Web. Dans ce cas, + vous aurez besoin de deux processus résidents, chacun fonctionnant + avec des paramètres User, Group, Listen, et - ServerRoot diffrents.
    • + ServerRoot différents. -
    • vous disposez suffisamment de mmoire et de +
    • vous disposez suffisamment de mémoire et de descripteurs de fichiers - pour l'coute de chaque alias IP de la machine. Il est seulement + pour l'écoute de chaque alias IP de la machine. Il est seulement possible d'appliquer la directive Listen, soit sur toutes les adresses avec le joker "*", soit uniquement sur des adresses - spcifiques. Donc, si vous avez besoin d'couter une adresse + spécifiques. Donc, si vous avez besoin d'écouter une adresse en particulier, vous devrez le faire pour l'ensemble des autres adresses (Bien qu'il soit plus simple de lancer un - processus httpd pour couter N-1 adresses, + processus httpd pour écouter N-1 adresses, et un autre pour l'adresse restante).
    -

    Utilisez un unique processus rsident lorsque :

    +

    Utilisez un unique processus résident lorsque :

    • le partage de la configuration httpd entre les serveurs virtuels est acceptable.
    • -
    • la machine assume dj une grande quantit de requtes, et - que l'ajout de processus rsidents supplmentaires en affecterait +
    • la machine assume déjà une grande quantité de requêtes, et + que l'ajout de processus résidents supplémentaires en affecterait les performances.
    @@ -95,38 +95,38 @@
    Configuration de processus multiples -

    Crez une installation indpendante du programme +

    Créez une installation indépendante du programme httpd pour chaque serveur virtuel. Pour chacune d'elle, utilisez la directive Listen dans le fichier - de configuration pour dfinir l'adresse IP (ou serveur virtuel) - que le processus rsident doit grer. Par exemple :

    + de configuration pour définir l'adresse IP (ou serveur virtuel) + que le processus résident doit gérer. Par exemple :

    Listen 192.0.2.100:80 -

    Il est recommand d'utiliser une adresse IP plutt qu'un nom - de domaine (consultez Problmes DNS +

    Il est recommandé d'utiliser une adresse IP plutôt qu'un nom + de domaine (consultez Problèmes DNS avec Apache).

    Configuration d'un unique processus -rsident pour des serveurs virtuels +résident pour des serveurs virtuels -

    Dans ce cas, un unique processus httpd va grer les requtes +

    Dans ce cas, un unique processus httpd va gérer les requêtes pour le serveur principal et tous les serveurs virtuels. Dans le fichier de configuration, la directive - VirtualHost va servir - dfinir les autres directives + VirtualHost va servir à + définir les autres directives ServerAdmin, ServerName, DocumentRoot, ErrorLog et TransferLog ou CustomLog avec des - valeurs diffrentes pour chaque serveur virtuel. Par exemple :

    + valeurs différentes pour chaque serveur virtuel. Par exemple :

    <VirtualHost 172.20.30.40:80> @@ -146,37 +146,37 @@ r </VirtualHost> -

    Il est recommand d'utiliser une adresse IP plutt qu'un nom - de domaine comme argument la directive <VirtualHost> - (consultez Problmes DNS +

    Il est recommandé d'utiliser une adresse IP plutôt qu'un nom + de domaine comme argument à la directive <VirtualHost> + (consultez Problèmes DNS avec Apache).

    Presque toutes les directives de configuration - peuvent tre employes dans une directive VirtualHost, l'exception - des directives qui contrlent la cration du processus et de - quelques autres. Pour connatre celles utilisables dans une - directive VirtualHost, vrifiez leur + peuvent être employées dans une directive VirtualHost, à l'exception + des directives qui contrôlent la création du processus et de + quelques autres. Pour connaître celles utilisables dans une + directive VirtualHost, vérifiez leur Contexte en utilisant l'Index des directives.

    -

    SuexecUserGroup peut tre - utilises l'intrieur d'une directive VirtualHost si l'excution se fait +

    SuexecUserGroup peut être + utilisées à l'intérieur d'une directive VirtualHost si l'exécution se fait sous suEXEC. (Voir suEXEC).

    -

    SCURIT : lorsque vous spcifiez o crire les +

    SÉCURITÉ : lorsque vous spécifiez où écrire les fichiers journaux, soyez attentif aux risques si quelqu'un d'autre - que celui qui a dmarr Apache dispose des droits d'criture + que celui qui a démarré Apache dispose des droits d'écriture sur l'emplacement de ces fichiers. Consultez les - Conseils sur la scurit - pour plus de dtails.

    + Conseils sur la sécurité + pour plus de détails.

    diff --git a/docs/manual/vhosts/mass.xml.fr b/docs/manual/vhosts/mass.xml.fr index 4a5f133816..08c476cc85 100644 --- a/docs/manual/vhosts/mass.xml.fr +++ b/docs/manual/vhosts/mass.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/vhosts/name-based.xml.fr b/docs/manual/vhosts/name-based.xml.fr index 1249b9070e..15a7b270da 100644 --- a/docs/manual/vhosts/name-based.xml.fr +++ b/docs/manual/vhosts/name-based.xml.fr @@ -1,4 +1,4 @@ - + @@ -27,41 +27,41 @@ Support Apache des serveurs virtuels par nom -

    Ce document dcrit quand et comment utiliser des serveurs +

    Ce document décrit quand et comment utiliser des serveurs virtuels par nom.

    Support Apache des serveurs virtuels par IP -Dtails sur le fonctionnement des serveurs virtuels -Configuration dynamique des hbergements virtuels de masse +Détails sur le fonctionnement des serveurs virtuels +Configuration dynamique des hébergements virtuels de masse Exemples d'utilisations de VirtualHost
    Serveurs virtuels par nom vs. par IP

    Les serveurs virtuels par IP utilisent l'adresse IP - de la connexion afin de dterminer quel serveur virtuel doit - rpondre. Par consquent, vous devez disposer d'adresses IP - diffrentes pour chaque serveur.

    + de la connexion afin de déterminer quel serveur virtuel doit + répondre. Par conséquent, vous devez disposer d'adresses IP + différentes pour chaque serveur.

    -

    Avec un hbergement +

    Avec un hébergement virtuel par nom, le serveur s'appuie sur les informations - transmises par le client dans les en-ttes HTTP de ses requtes. - La technique prsente ici vous permet de disposer de serveurs - virtuels diffrents partags sur une mme adresse IP.

    + transmises par le client dans les en-têtes HTTP de ses requêtes. + La technique présentée ici vous permet de disposer de serveurs + virtuels différents partagés sur une même adresse IP.

    -

    L'hbergement virtuel par nom est habituellement plus simple, +

    L'hébergement virtuel par nom est habituellement plus simple, car il vous suffit de configurer votre serveur DNS pour que chaque domaine pointe sur l'adresse IP dont vous disposez, et de configurer votre serveur Apache HTTP afin qu'il reconnaisse - ces domaines. Il rduit aussi la pnurie en adresses IP. Par - consquent, vous devriez utiliser l'hbergement virtuel par - nom, sauf dans le cas o vous utiliseriez des quipements qui - ncessitent un hbergement bas sur IP. Les raisons historiques de - l'hbergement bas sur IP dans un but de support de certains clients ne - s'appliquent plus un serveur web d'usage gnral.

    - -

    La slection du serveur virtuel en fonction du nom s'opre en - dehors de l'algorithme de slection du serveur virtuel en fonction + ces domaines. Il réduit aussi la pénurie en adresses IP. Par + conséquent, vous devriez utiliser l'hébergement virtuel par + nom, sauf dans le cas où vous utiliseriez des équipements qui + nécessitent un hébergement basé sur IP. Les raisons historiques de + l'hébergement basé sur IP dans un but de support de certains clients ne + s'appliquent plus à un serveur web d'usage général.

    + +

    La sélection du serveur virtuel en fonction du nom s'opère en + dehors de l'algorithme de sélection du serveur virtuel en fonction de l'adresse IP, ce qui signifie que les recherches du point de vue du nom du serveur ne s'effectuent que parmi le jeu de serveurs virtuels pour lesquels la correspondance avec la paire adresse @@ -69,42 +69,42 @@

    -
    Comment le serveur slectionne-t-il le serveur -virtuel bas sur le nom appropri +
    Comment le serveur sélectionne-t-il le serveur +virtuel basé sur le nom approprié -

    Il est important de savoir que la premire tape de la rsolution - de serveur virtuel base sur le nom est une rsolution base sur IP. - La rsolution de serveur virtuel base sur le nom ne fait que - choisir le serveur virtuel bas sur le nom le plus appropri, en se +

    Il est important de savoir que la première étape de la résolution + de serveur virtuel basée sur le nom est une résolution basée sur IP. + La résolution de serveur virtuel basée sur le nom ne fait que + choisir le serveur virtuel basé sur le nom le plus approprié, en se limitant aux candidats qui conviennent le mieux du point de vue IP. - La rsolution base sur IP est sans objet si l'on - utilise un caractre gnrique (*) pour l'adresse IP dans + La résolution basée sur IP est sans objet si l'on + utilise un caractère générique (*) pour l'adresse IP dans toutes les directives VirtualHost.

    -

    A l'arrive d'une requte, le serveur va rechercher l'argument de +

    A l'arrivée d'une requête, le serveur va rechercher l'argument de section VirtualHost prsentant la meilleure + module="core">VirtualHost présentant la meilleure (la plus exacte) correspondance avec la paire adresse IP/port - utilise dans la requte. Si plusieurs serveurs virtuels possdent - cette mme paire adresse IP/port, Apache va ensuite comparer les + utilisée dans la requête. Si plusieurs serveurs virtuels possèdent + cette même paire adresse IP/port, Apache va ensuite comparer les valeurs des directives ServerName et module="core">ServerAlias avec le nom de serveur - prsent dans la requte.

    + présent dans la requête.

    -

    Si vous ne dfinissez pas de directive ServerName pour un serveur virtuel base - de nom, le serveur utilisera par dfaut le nom de domaine - entirement qualifi (FQDN) dduit du nom d'hte systme. Cette - configuration sans nom de serveur explicite peut conduire des - erreurs de choix du serveur virtuel utiliser et est dconseille.

    +

    Si vous ne définissez pas de directive ServerName pour un serveur virtuel à base + de nom, le serveur utilisera par défaut le nom de domaine + entièrement qualifié (FQDN) déduit du nom d'hôte système. Cette + configuration sans nom de serveur explicite peut conduire à des + erreurs de choix du serveur virtuel à utiliser et est déconseillée.

    -
    Le serveur virtuel base de nom - par dfaut pour une paire adresse IP/port +
    Le serveur virtuel à base de nom + par défaut pour une paire adresse IP/port

    Si aucune directive ServerName ou ServerAlias ne correspond dans - la liste de serveurs virtuels prsentant la meilleure correspondance + la liste de serveurs virtuels présentant la meilleure correspondance du point de vue adresse IP/port, c'est le premier serveur - virtuel de cette liste qui sera utilis.

    + virtuel de cette liste qui sera utilisé.

    @@ -125,62 +125,62 @@ virtuel bas -

    La premire tape consiste crer une section +

    La première étape consiste à créer une section VirtualHost - pour chacun des serveurs dfinir. Dans chaque section + pour chacun des serveurs à définir. Dans chaque section VirtualHost, - vous devez dfinir au minimum une directive - ServerName pour dsigner - le serveur concern et une directive - DocumentRoot pour prciser - l'emplacement sur le systme de fichiers du contenu de ce serveur.

    - - Le serveur principal disparat -

    Toute requte qui ne correspond aucune section ServerName pour désigner + le serveur concerné et une directive + DocumentRoot pour préciser + l'emplacement sur le système de fichiers du contenu de ce serveur.

    + + Le serveur principal disparaît +

    Toute requête qui ne correspond à aucune section VirtualHost existante - est traite avec la configuration du serveur principal, sans - tenir compte du nom d'hte ou de la directive ServerName.

    - -

    Lorsque vous ajoutez un serveur virtuel bas sur le nom un - serveur existant, et si les caractristiques de ce serveur - virtuel correspondent des combinaisons IP/port prexistantes, - les requtes seront alors traites par un serveur virtuel - explicite. Dans ce cas, il est en gnral judicieux de crer un - serveur virtuel par dfaut + est traitée avec la configuration du serveur principal, sans + tenir compte du nom d'hôte ou de la directive ServerName.

    + +

    Lorsque vous ajoutez un serveur virtuel basé sur le nom à un + serveur existant, et si les caractéristiques de ce serveur + virtuel correspondent à des combinaisons IP/port préexistantes, + les requêtes seront alors traitées par un serveur virtuel + explicite. Dans ce cas, il est en général judicieux de créer un + serveur virtuel par défaut comportant une directive ServerName correspondant au nom du - serveur principal. De nouveaux domaines sur les mmes interface - et port, mais ncessitant des configurations distinctes, - pourront alors tre ajouts en tant que serveurs virtuels - spcifiques (et non par dfaut).

    + serveur principal. De nouveaux domaines sur les mêmes interface + et port, mais nécessitant des configurations distinctes, + pourront alors être ajoutés en tant que serveurs virtuels + spécifiques (et non par défaut).

    - Hritage du nom de serveur -

    Il est toujours prfrable de dfinir une directive Héritage du nom de serveur +

    Il est toujours préférable de définir une directive ServerName au niveau de chaque serveur - virtuel base de nom. Si un serveur virtuel ne dfinit pas + virtuel à base de nom. Si un serveur virtuel ne définit pas de directive ServerName, le - nom de ce serveur virtuel sera hrit du serveur principal. Si - aucun nom de serveur n'a t explicitement dfini au niveau du - serveur principal, le serveur tentera de dterminer son nom via - une rsolution de nom DNS inverse sur la premire adresse - d'coute. Dans tous les cas, ce nom de serveur hrit influencera - la slection du serveur virtuel base de nom, c'est pourquoi il - est toujours prfrable de dfinir une directive ServerName pour chaque serveur virtuel - base de nom.

    + à base de nom.

    -

    Par exemple, supposez que vous hbergez le domaine +

    Par exemple, supposez que vous hébergez le domaine www.example.com et que vous souhaitez ajouter le serveur virtuel other.example.com qui pointe sur - la mme adresse IP. Il vous suffit d'ajouter la configuration - suivante httpd.conf :

    + la même adresse IP. Il vous suffit d'ajouter la configuration + suivante à httpd.conf :

    <VirtualHost *:80> # Le premier serveur virtuel de la liste est aussi le - # serveur par dfaut pour *:80 + # serveur par défaut pour *:80 ServerName www.example.com ServerAlias example.com DocumentRoot "/www/domain" @@ -192,65 +192,65 @@ virtuel bas </VirtualHost> -

    Autrement, vous pouvez spcifiez une adresse IP explicite - la place de * dans la directive +

    Autrement, vous pouvez spécifiez une adresse IP explicite + à la place de * dans la directive VirtualHost. - Par exemple, cette mthode est utile si vous souhaitez faire - tourner quelques serveurs virtuels par nom sur une mme adresse - IP, et d'autres, soit par IP, soit bass sur un autre jeu de + Par exemple, cette méthode est utile si vous souhaitez faire + tourner quelques serveurs virtuels par nom sur une même adresse + IP, et d'autres, soit par IP, soit basés sur un autre jeu de serveurs virtuels par nom sur une autre adresse IP.

    Plusieurs serveurs sont accessibles par plus d'un nom. Il suffit de placer la directive ServerAlias dans une section VirtualHost. - Par exemple, dans la premire section + Par exemple, dans la première section VirtualHost ci-dessus, la directive ServerAlias - indique aux utilisateurs les autres noms permis pour accder au - mme site Web :

    + indique aux utilisateurs les autres noms permis pour accéder au + même site Web :

    ServerAlias example.com *.example.com -

    ainsi, toutes les requtes portant sur un domaine +

    ainsi, toutes les requêtes portant sur un domaine example.com seront servies par le serveur virtuel - www.example.com. Les caractres joker * - et ? peuvent tre utiliss pour les correspondances. + www.example.com. Les caractères joker * + et ? peuvent être utilisés pour les correspondances. Bien entendu, vous ne pouvez pas inventer des noms et les placer dans une directive ServerName ou ServerAlias. Tout d'abord, votre serveur DNS - doit tre correctement configur pour lier ces noms une - adresse IP associe avec votre serveur.

    + doit être correctement configuré pour lier ces noms à une + adresse IP associée avec votre serveur.

    -

    La recherche du serveur virtuel base de nom qui correspond au - plus prs la requte s'effectue parmi les La recherche du serveur virtuel à base de nom qui correspond au + plus près à la requête s'effectue parmi les virtualhost selon leur ordre d'apparition dans le fichier de configuration. Le premier serveur virtuel dont le ServerName ou le ServerAlias correspond est utilis, sans - priorit particulire en cas de prsence de caractres gnriques + module="core">ServerAlias correspond est utilisé, sans + priorité particulière en cas de présence de caractères génériques (que ce soit pour le ServerName ou le ServerAlias).

    -

    La liste complte des noms dans la section VirtualHost sont traits comme une +

    La liste complète des noms dans la section VirtualHost sont traités comme une directive ServerAlias sans - caractres gnriques.

    + caractères génériques.

    Finalement, vous pouvez affiner la configuration des serveurs - virtuels en plaant d'autres directives l'intrieur des sections + virtuels en plaçant d'autres directives à l'intérieur des sections VirtualHost. - La plupart des directives peut tre place dans ces sections en - y changeant seulement la configuration du serveur virtuel associ. - Pour dterminer si une directive particulire est permise, + La plupart des directives peut être placée dans ces sections en + y changeant seulement la configuration du serveur virtuel associé. + Pour déterminer si une directive particulière est permise, consultez le contexte de la - directive. Le jeu de directives configures dans le contexte + directive. Le jeu de directives configurées dans le contexte du serveur principal (en dehors de toutes sections VirtualHost) - sera utilis seulement s'il n'y a pas de configuration contraire + sera utilisé seulement s'il n'y a pas de configuration contraire par un serveur virtuel.

    -- GitLab From fc1372199ba322513e4d21cf953e5b0727dd3656 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Malo?= Date: Sun, 27 Nov 2016 22:24:38 +0000 Subject: [PATCH 015/224] remove BOM git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1771659 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/mod_proxy_scgi.xml.fr | 2 +- docs/manual/suexec.xml.fr | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/manual/mod/mod_proxy_scgi.xml.fr b/docs/manual/mod/mod_proxy_scgi.xml.fr index 820195efe6..72235e90fd 100644 --- a/docs/manual/mod/mod_proxy_scgi.xml.fr +++ b/docs/manual/mod/mod_proxy_scgi.xml.fr @@ -1,4 +1,4 @@ - + diff --git a/docs/manual/suexec.xml.fr b/docs/manual/suexec.xml.fr index 6b0d644495..c67a215180 100644 --- a/docs/manual/suexec.xml.fr +++ b/docs/manual/suexec.xml.fr @@ -1,4 +1,4 @@ - + -- GitLab From e21fc3206748d0c9a0228a7584b15bda5f6c5003 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Malo?= Date: Sun, 27 Nov 2016 22:27:47 +0000 Subject: [PATCH 016/224] update transformation git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1771661 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/convenience.map | 2 + docs/manual/mod/directives.html.de | 2 + docs/manual/mod/directives.html.en | 1 + docs/manual/mod/directives.html.es | 2 + docs/manual/mod/directives.html.ja.utf8 | 2 + docs/manual/mod/directives.html.ko.euc-kr | 2 + docs/manual/mod/directives.html.tr.utf8 | 2 + docs/manual/mod/directives.html.zh-cn.utf8 | 2 + docs/manual/mod/mod_http2.html.en | 26 + docs/manual/mod/quickreference.html.de | 18 +- docs/manual/mod/quickreference.html.en | 897 +++++++++--------- docs/manual/mod/quickreference.html.es | 18 +- docs/manual/mod/quickreference.html.ja.utf8 | 18 +- docs/manual/mod/quickreference.html.ko.euc-kr | 18 +- docs/manual/mod/quickreference.html.tr.utf8 | 18 +- .../manual/mod/quickreference.html.zh-cn.utf8 | 18 +- docs/manual/ssl/ssl_faq.html.fr | 22 +- docs/manual/ssl/ssl_howto.html.fr | 6 +- 18 files changed, 564 insertions(+), 510 deletions(-) diff --git a/docs/manual/convenience.map b/docs/manual/convenience.map index cbd4dab6c3..201fada50f 100644 --- a/docs/manual/convenience.map +++ b/docs/manual/convenience.map @@ -244,6 +244,7 @@ gracefulshutdowntimeout mod/mpm_common.html#gracefulshutdowntimeout group mod/mod_unixd.html#group h2copyfiles mod/mod_http2.html#h2copyfiles h2direct mod/mod_http2.html#h2direct +h2earlyhints mod/mod_http2.html#h2earlyhints h2maxsessionstreams mod/mod_http2.html#h2maxsessionstreams h2maxworkeridleseconds mod/mod_http2.html#h2maxworkeridleseconds h2maxworkers mod/mod_http2.html#h2maxworkers @@ -252,6 +253,7 @@ h2moderntlsonly mod/mod_http2.html#h2moderntlsonly h2push mod/mod_http2.html#h2push h2pushdiarysize mod/mod_http2.html#h2pushdiarysize h2pushpriority mod/mod_http2.html#h2pushpriority +h2pushresource mod/mod_http2.html#h2pushresource h2serializeheaders mod/mod_http2.html#h2serializeheaders h2sessionextrafiles mod/mod_http2.html#h2sessionextrafiles h2streammaxmemsize mod/mod_http2.html#h2streammaxmemsize diff --git a/docs/manual/mod/directives.html.de b/docs/manual/mod/directives.html.de index 2a8aa5a084..26cc86b36b 100644 --- a/docs/manual/mod/directives.html.de +++ b/docs/manual/mod/directives.html.de @@ -286,6 +286,7 @@
  • Group
  • H2CopyFiles
  • H2Direct
  • +
  • H2EarlyHints
  • H2MaxSessionStreams
  • H2MaxWorkerIdleSeconds
  • H2MaxWorkers
  • @@ -294,6 +295,7 @@
  • H2Push
  • H2PushDiarySize
  • H2PushPriority
  • +
  • H2PushResource
  • H2SerializeHeaders
  • H2SessionExtraFiles
  • H2StreamMaxMemSize
  • diff --git a/docs/manual/mod/directives.html.en b/docs/manual/mod/directives.html.en index b1bc7a68f9..343cb239d8 100644 --- a/docs/manual/mod/directives.html.en +++ b/docs/manual/mod/directives.html.en @@ -287,6 +287,7 @@
  • Group
  • H2CopyFiles
  • H2Direct
  • +
  • H2EarlyHints
  • H2MaxSessionStreams
  • H2MaxWorkerIdleSeconds
  • H2MaxWorkers
  • diff --git a/docs/manual/mod/directives.html.es b/docs/manual/mod/directives.html.es index 6ea5c6bcdd..78e06cb079 100644 --- a/docs/manual/mod/directives.html.es +++ b/docs/manual/mod/directives.html.es @@ -289,6 +289,7 @@
  • Group
  • H2CopyFiles
  • H2Direct
  • +
  • H2EarlyHints
  • H2MaxSessionStreams
  • H2MaxWorkerIdleSeconds
  • H2MaxWorkers
  • @@ -297,6 +298,7 @@
  • H2Push
  • H2PushDiarySize
  • H2PushPriority
  • +
  • H2PushResource
  • H2SerializeHeaders
  • H2SessionExtraFiles
  • H2StreamMaxMemSize
  • diff --git a/docs/manual/mod/directives.html.ja.utf8 b/docs/manual/mod/directives.html.ja.utf8 index 1644d5e26e..de7d72c36f 100644 --- a/docs/manual/mod/directives.html.ja.utf8 +++ b/docs/manual/mod/directives.html.ja.utf8 @@ -284,6 +284,7 @@
  • Group
  • H2CopyFiles
  • H2Direct
  • +
  • H2EarlyHints
  • H2MaxSessionStreams
  • H2MaxWorkerIdleSeconds
  • H2MaxWorkers
  • @@ -292,6 +293,7 @@
  • H2Push
  • H2PushDiarySize
  • H2PushPriority
  • +
  • H2PushResource
  • H2SerializeHeaders
  • H2SessionExtraFiles
  • H2StreamMaxMemSize
  • diff --git a/docs/manual/mod/directives.html.ko.euc-kr b/docs/manual/mod/directives.html.ko.euc-kr index 3643ec024b..6449fc0169 100644 --- a/docs/manual/mod/directives.html.ko.euc-kr +++ b/docs/manual/mod/directives.html.ko.euc-kr @@ -284,6 +284,7 @@
  • Group
  • H2CopyFiles
  • H2Direct
  • +
  • H2EarlyHints
  • H2MaxSessionStreams
  • H2MaxWorkerIdleSeconds
  • H2MaxWorkers
  • @@ -292,6 +293,7 @@
  • H2Push
  • H2PushDiarySize
  • H2PushPriority
  • +
  • H2PushResource
  • H2SerializeHeaders
  • H2SessionExtraFiles
  • H2StreamMaxMemSize
  • diff --git a/docs/manual/mod/directives.html.tr.utf8 b/docs/manual/mod/directives.html.tr.utf8 index eb75f89aaf..3d95c01c62 100644 --- a/docs/manual/mod/directives.html.tr.utf8 +++ b/docs/manual/mod/directives.html.tr.utf8 @@ -283,6 +283,7 @@
  • Group
  • H2CopyFiles
  • H2Direct
  • +
  • H2EarlyHints
  • H2MaxSessionStreams
  • H2MaxWorkerIdleSeconds
  • H2MaxWorkers
  • @@ -291,6 +292,7 @@
  • H2Push
  • H2PushDiarySize
  • H2PushPriority
  • +
  • H2PushResource
  • H2SerializeHeaders
  • H2SessionExtraFiles
  • H2StreamMaxMemSize
  • diff --git a/docs/manual/mod/directives.html.zh-cn.utf8 b/docs/manual/mod/directives.html.zh-cn.utf8 index ceefeb3e4a..02dbcfa415 100644 --- a/docs/manual/mod/directives.html.zh-cn.utf8 +++ b/docs/manual/mod/directives.html.zh-cn.utf8 @@ -282,6 +282,7 @@
  • Group
  • H2CopyFiles
  • H2Direct
  • +
  • H2EarlyHints
  • H2MaxSessionStreams
  • H2MaxWorkerIdleSeconds
  • H2MaxWorkers
  • @@ -290,6 +291,7 @@
  • H2Push
  • H2PushDiarySize
  • H2PushPriority
  • +
  • H2PushResource
  • H2SerializeHeaders
  • H2SessionExtraFiles
  • H2StreamMaxMemSize
  • diff --git a/docs/manual/mod/mod_http2.html.en b/docs/manual/mod/mod_http2.html.en index 97d4a5819b..c425e9fde1 100644 --- a/docs/manual/mod/mod_http2.html.en +++ b/docs/manual/mod/mod_http2.html.en @@ -84,6 +84,7 @@
    +
    top
    +

    H2EarlyHints Directive

    + + + + + + + + +
    Description:Determine sending of 103 status codes
    Syntax:H2EarlyHints on|off
    Default:H2EarlyHints off
    Context:server config, virtual host
    Status:Extension
    Module:mod_http2
    Compatibility:Available in version 2.4.24 and later.
    +

    + This setting controls if HTTP status 103 interim responses are + forwarded to the client or not. By default, this is currently + not the case since a range of clients still have trouble with + unexpected interim responses. +

    +

    + When set to on, PUSH resources announced with + H2PushResource will trigger an interim 103 response + before the final response. The 103 response will carry Link + headers that advise the preload of such resources. +

    +
    top

    H2MaxSessionStreams Directive

    diff --git a/docs/manual/mod/quickreference.html.de b/docs/manual/mod/quickreference.html.de index 73b1176956..7ae67051ee 100644 --- a/docs/manual/mod/quickreference.html.de +++ b/docs/manual/mod/quickreference.html.de @@ -479,14 +479,16 @@ will exit. requests H2CopyFiles on|off off svdhEDetermine file handling in responses H2Direct on|off on for h2c, off for +svEH2 Direct Protocol Switch -H2MaxSessionStreams n 100 svEMaximum number of active streams per HTTP/2 session. -H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. -H2MaxWorkers nsEMaximum number of worker threads to use per child process. -H2MinWorkers nsEMinimal number of worker threads to use per child process. -H2ModernTLSOnly on|off on svERequire HTTP/2 connections to be "modern TLS" only -H2Push on|off on svEH2 Server Push Switch -H2PushDiarySize n 256 svEH2 Server Push Diary Size -H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 svEH2 Server Push Priority +H2EarlyHints on|off off svEDetermine sending of 103 status codes +H2MaxSessionStreams n 100 svEMaximum number of active streams per HTTP/2 session. +H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. +H2MaxWorkers nsEMaximum number of worker threads to use per child process. +H2MinWorkers nsEMinimal number of worker threads to use per child process. +H2ModernTLSOnly on|off on svERequire HTTP/2 connections to be "modern TLS" only +H2Push on|off on svEH2 Server Push Switch +H2PushDiarySize n 256 svEH2 Server Push Diary Size +H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 svEH2 Server Push Priority +H2PushResource [add] path [critical]svdhEDeclares resources for early pushing to the client H2SerializeHeaders on|off off svESerialize Request/Response Processing Switch H2SessionExtraFiles nsvENumber of Extra File Handles H2StreamMaxMemSize bytes 65536 svEMaximum amount of output data buffered per stream. diff --git a/docs/manual/mod/quickreference.html.en b/docs/manual/mod/quickreference.html.en index a4f36011c2..c0c2e2ed5b 100644 --- a/docs/manual/mod/quickreference.html.en +++ b/docs/manual/mod/quickreference.html.en @@ -474,634 +474,635 @@ will exit. requests H2CopyFiles on|off off svdhEDetermine file handling in responses H2Direct on|off on for h2c, off for +svEH2 Direct Protocol Switch -H2MaxSessionStreams n 100 svEMaximum number of active streams per HTTP/2 session. -H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. -H2MaxWorkers nsEMaximum number of worker threads to use per child process. -H2MinWorkers nsEMinimal number of worker threads to use per child process. -H2ModernTLSOnly on|off on svERequire HTTP/2 connections to be "modern TLS" only -H2Push on|off on svEH2 Server Push Switch -H2PushDiarySize n 256 svEH2 Server Push Diary Size -H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 svEH2 Server Push Priority -H2PushResource [add] path [critical]svdhEDeclares resources for early pushing to the client -H2SerializeHeaders on|off off svESerialize Request/Response Processing Switch -H2SessionExtraFiles nsvENumber of Extra File Handles -H2StreamMaxMemSize bytes 65536 svEMaximum amount of output data buffered per stream. -H2TLSCoolDownSecs seconds 1 svE- -H2TLSWarmUpSize amount 1048576 svE- -H2Upgrade on|off on for h2c, off for +svEH2 Upgrade Protocol Switch -H2WindowSize bytes 65535 svESize of Stream Window for upstream data. -Header [condition] add|append|echo|edit|edit*|merge|set|setifempty|unset|note +H2EarlyHints on|off off svEDetermine sending of 103 status codes +H2MaxSessionStreams n 100 svEMaximum number of active streams per HTTP/2 session. +H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. +H2MaxWorkers nsEMaximum number of worker threads to use per child process. +H2MinWorkers nsEMinimal number of worker threads to use per child process. +H2ModernTLSOnly on|off on svERequire HTTP/2 connections to be "modern TLS" only +H2Push on|off on svEH2 Server Push Switch +H2PushDiarySize n 256 svEH2 Server Push Diary Size +H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 svEH2 Server Push Priority +H2PushResource [add] path [critical]svdhEDeclares resources for early pushing to the client +H2SerializeHeaders on|off off svESerialize Request/Response Processing Switch +H2SessionExtraFiles nsvENumber of Extra File Handles +H2StreamMaxMemSize bytes 65536 svEMaximum amount of output data buffered per stream. +H2TLSCoolDownSecs seconds 1 svE- +H2TLSWarmUpSize amount 1048576 svE- +H2Upgrade on|off on for h2c, off for +svEH2 Upgrade Protocol Switch +H2WindowSize bytes 65535 svESize of Stream Window for upstream data. +Header [condition] add|append|echo|edit|edit*|merge|set|setifempty|unset|note header [[expr=]value [replacement] [early|env=[!]varname|expr=expression]] -svdhEConfigure HTTP response headers -HeaderName filenamesvdhBName of the file that will be inserted at the top +svdhEConfigure HTTP response headers +HeaderName filenamesvdhBName of the file that will be inserted at the top of the index listing -HeartbeatAddress addr:portsXMulticast address for heartbeat packets -HeartbeatListenaddr:portsXmulticast address to listen for incoming heartbeat requests -HeartbeatMaxServers number-of-servers 10 sXSpecifies the maximum number of servers that will be sending +HeartbeatAddress addr:portsXMulticast address for heartbeat packets +HeartbeatListenaddr:portsXmulticast address to listen for incoming heartbeat requests +HeartbeatMaxServers number-of-servers 10 sXSpecifies the maximum number of servers that will be sending heartbeat requests to this server -HeartbeatStorage file-path logs/hb.dat sXPath to store heartbeat data -HeartbeatStorage file-path logs/hb.dat sXPath to read heartbeat data -HostnameLookups On|Off|Double Off svdCEnables DNS lookups on client IP addresses -IdentityCheck On|Off Off svdEEnables logging of the RFC 1413 identity of the remote +HeartbeatStorage file-path logs/hb.dat sXPath to store heartbeat data +HeartbeatStorage file-path logs/hb.dat sXPath to read heartbeat data +HostnameLookups On|Off|Double Off svdCEnables DNS lookups on client IP addresses +IdentityCheck On|Off Off svdEEnables logging of the RFC 1413 identity of the remote user -IdentityCheckTimeout seconds 30 svdEDetermines the timeout duration for ident requests -<If expression> ... </If>svdhCContains directives that apply only if a condition is +IdentityCheckTimeout seconds 30 svdEDetermines the timeout duration for ident requests +<If expression> ... </If>svdhCContains directives that apply only if a condition is satisfied by a request at runtime -<IfDefine [!]parameter-name> ... - </IfDefine>svdhCEncloses directives that will be processed only +<IfDefine [!]parameter-name> ... + </IfDefine>svdhCEncloses directives that will be processed only if a test is true at startup -<IfModule [!]module-file|module-identifier> ... - </IfModule>svdhCEncloses directives that are processed conditional on the +<IfModule [!]module-file|module-identifier> ... + </IfModule>svdhCEncloses directives that are processed conditional on the presence or absence of a specific module -<IfVersion [[!]operator] version> ... -</IfVersion>svdhEcontains version dependent configuration -ImapBase map|referer|URL http://servername/ svdhBDefault base for imagemap files -ImapDefault error|nocontent|map|referer|URL nocontent svdhBDefault action when an imagemap is called with coordinates +<IfVersion [[!]operator] version> ... +</IfVersion>svdhEcontains version dependent configuration +ImapBase map|referer|URL http://servername/ svdhBDefault base for imagemap files +ImapDefault error|nocontent|map|referer|URL nocontent svdhBDefault action when an imagemap is called with coordinates that are not explicitly mapped -ImapMenu none|formatted|semiformatted|unformatted formatted svdhBAction if no coordinates are given when calling +ImapMenu none|formatted|semiformatted|unformatted formatted svdhBAction if no coordinates are given when calling an imagemap -Include file-path|directory-path|wildcardsvdCIncludes other configuration files from within +Include file-path|directory-path|wildcardsvdCIncludes other configuration files from within the server configuration files -IncludeOptional file-path|directory-path|wildcardsvdCIncludes other configuration files from within +IncludeOptional file-path|directory-path|wildcardsvdCIncludes other configuration files from within the server configuration files -IndexHeadInsert "markup ..."svdhBInserts text in the HEAD section of an index page. -IndexIgnore file [file] ... "." svdhBAdds to the list of files to hide when listing +IndexHeadInsert "markup ..."svdhBInserts text in the HEAD section of an index page. +IndexIgnore file [file] ... "." svdhBAdds to the list of files to hide when listing a directory -IndexIgnoreReset ON|OFFsvdhBEmpties the list of files to hide when listing +IndexIgnoreReset ON|OFFsvdhBEmpties the list of files to hide when listing a directory -IndexOptions [+|-]option [[+|-]option] -...svdhBVarious configuration settings for directory +IndexOptions [+|-]option [[+|-]option] +...svdhBVarious configuration settings for directory indexing -IndexOrderDefault Ascending|Descending -Name|Date|Size|Description Ascending Name svdhBSets the default ordering of the directory index -IndexStyleSheet url-pathsvdhBAdds a CSS stylesheet to the directory index -InputSed sed-commanddhXSed command to filter request data (typically POST data) -ISAPIAppendLogToErrors on|off off svdhBRecord HSE_APPEND_LOG_PARAMETER requests from +IndexOrderDefault Ascending|Descending +Name|Date|Size|Description Ascending Name svdhBSets the default ordering of the directory index +IndexStyleSheet url-pathsvdhBAdds a CSS stylesheet to the directory index +InputSed sed-commanddhXSed command to filter request data (typically POST data) +ISAPIAppendLogToErrors on|off off svdhBRecord HSE_APPEND_LOG_PARAMETER requests from ISAPI extensions to the error log -ISAPIAppendLogToQuery on|off on svdhBRecord HSE_APPEND_LOG_PARAMETER requests from +ISAPIAppendLogToQuery on|off on svdhBRecord HSE_APPEND_LOG_PARAMETER requests from ISAPI extensions to the query field -ISAPICacheFile file-path [file-path] -...svBISAPI .dll files to be loaded at startup -ISAPIFakeAsync on|off off svdhBFake asynchronous support for ISAPI callbacks -ISAPILogNotSupported on|off off svdhBLog unsupported feature requests from ISAPI +ISAPICacheFile file-path [file-path] +...svBISAPI .dll files to be loaded at startup +ISAPIFakeAsync on|off off svdhBFake asynchronous support for ISAPI callbacks +ISAPILogNotSupported on|off off svdhBLog unsupported feature requests from ISAPI extensions -ISAPIReadAheadBuffer size 49152 svdhBSize of the Read Ahead Buffer sent to ISAPI +ISAPIReadAheadBuffer size 49152 svdhBSize of the Read Ahead Buffer sent to ISAPI extensions -KeepAlive On|Off On svCEnables HTTP persistent connections -KeepAliveTimeout num[ms] 5 svCAmount of time the server will wait for subsequent +KeepAlive On|Off On svCEnables HTTP persistent connections +KeepAliveTimeout num[ms] 5 svCAmount of time the server will wait for subsequent requests on a persistent connection -KeptBodySize maximum size in bytes 0 dBKeep the request body instead of discarding it up to +KeptBodySize maximum size in bytes 0 dBKeep the request body instead of discarding it up to the specified maximum size, for potential use by filters such as mod_include. -LanguagePriority MIME-lang [MIME-lang] -...svdhBThe precedence of language variants for cases where +LanguagePriority MIME-lang [MIME-lang] +...svdhBThe precedence of language variants for cases where the client does not express a preference -LDAPCacheEntries number 1024 sEMaximum number of entries in the primary LDAP cache -LDAPCacheTTL seconds 600 sETime that cached items remain valid -LDAPConnectionPoolTTL n -1 svEDiscard backend connections that have been sitting in the connection pool too long -LDAPConnectionTimeout secondssESpecifies the socket connection timeout in seconds -LDAPLibraryDebug 7sEEnable debugging in the LDAP SDK -LDAPOpCacheEntries number 1024 sENumber of entries used to cache LDAP compare +LDAPCacheEntries number 1024 sEMaximum number of entries in the primary LDAP cache +LDAPCacheTTL seconds 600 sETime that cached items remain valid +LDAPConnectionPoolTTL n -1 svEDiscard backend connections that have been sitting in the connection pool too long +LDAPConnectionTimeout secondssESpecifies the socket connection timeout in seconds +LDAPLibraryDebug 7sEEnable debugging in the LDAP SDK +LDAPOpCacheEntries number 1024 sENumber of entries used to cache LDAP compare operations -LDAPOpCacheTTL seconds 600 sETime that entries in the operation cache remain +LDAPOpCacheTTL seconds 600 sETime that entries in the operation cache remain valid -LDAPReferralHopLimit numberdhEThe maximum number of referral hops to chase before terminating an LDAP query. -LDAPReferrals On|Off|default On dhEEnable referral chasing during queries to the LDAP server. -LDAPRetries number-of-retries 3 sEConfigures the number of LDAP server retries. -LDAPRetryDelay seconds 0 sEConfigures the delay between LDAP server retries. -LDAPSharedCacheFile directory-path/filenamesESets the shared memory cache file -LDAPSharedCacheSize bytes 500000 sESize in bytes of the shared-memory cache -LDAPTimeout seconds 60 sESpecifies the timeout for LDAP search and bind operations, in seconds -LDAPTrustedClientCert type directory-path/filename/nickname [password]dhESets the file containing or nickname referring to a per +LDAPReferralHopLimit numberdhEThe maximum number of referral hops to chase before terminating an LDAP query. +LDAPReferrals On|Off|default On dhEEnable referral chasing during queries to the LDAP server. +LDAPRetries number-of-retries 3 sEConfigures the number of LDAP server retries. +LDAPRetryDelay seconds 0 sEConfigures the delay between LDAP server retries. +LDAPSharedCacheFile directory-path/filenamesESets the shared memory cache file +LDAPSharedCacheSize bytes 500000 sESize in bytes of the shared-memory cache +LDAPTimeout seconds 60 sESpecifies the timeout for LDAP search and bind operations, in seconds +LDAPTrustedClientCert type directory-path/filename/nickname [password]dhESets the file containing or nickname referring to a per connection client certificate. Not all LDAP toolkits support per connection client certificates. -LDAPTrustedGlobalCert type directory-path/filename [password]sESets the file or database containing global trusted +LDAPTrustedGlobalCert type directory-path/filename [password]sESets the file or database containing global trusted Certificate Authority or global client certificates -LDAPTrustedMode typesvESpecifies the SSL/TLS mode to be used when connecting to an LDAP server. -LDAPVerifyServerCert On|Off On sEForce server certificate verification -<Limit method [method] ... > ... - </Limit>dhCRestrict enclosed access controls to only certain HTTP +LDAPTrustedMode typesvESpecifies the SSL/TLS mode to be used when connecting to an LDAP server. +LDAPVerifyServerCert On|Off On sEForce server certificate verification +<Limit method [method] ... > ... + </Limit>dhCRestrict enclosed access controls to only certain HTTP methods -<LimitExcept method [method] ... > ... - </LimitExcept>dhCRestrict access controls to all HTTP methods +<LimitExcept method [method] ... > ... + </LimitExcept>dhCRestrict access controls to all HTTP methods except the named ones -LimitInternalRecursion number [number] 10 svCDetermine maximum number of internal redirects and nested +LimitInternalRecursion number [number] 10 svCDetermine maximum number of internal redirects and nested subrequests -LimitRequestBody bytes 0 svdhCRestricts the total size of the HTTP request body sent +LimitRequestBody bytes 0 svdhCRestricts the total size of the HTTP request body sent from the client -LimitRequestFields number 100 svCLimits the number of HTTP request header fields that +LimitRequestFields number 100 svCLimits the number of HTTP request header fields that will be accepted from the client -LimitRequestFieldSize bytes 8190 svCLimits the size of the HTTP request header allowed from the +LimitRequestFieldSize bytes 8190 svCLimits the size of the HTTP request header allowed from the client -LimitRequestLine bytes 8190 svCLimit the size of the HTTP request line that will be accepted +LimitRequestLine bytes 8190 svCLimit the size of the HTTP request line that will be accepted from the client -LimitXMLRequestBody bytes 1000000 svdhCLimits the size of an XML-based request body -Listen [IP-address:]portnumber [protocol]sMIP addresses and ports that the server +LimitXMLRequestBody bytes 1000000 svdhCLimits the size of an XML-based request body +Listen [IP-address:]portnumber [protocol]sMIP addresses and ports that the server listens to -ListenBacklog backlogsMMaximum length of the queue of pending connections -ListenCoresBucketsRatio ratio 0 (disabled) sMRatio between the number of CPU cores (online) and the number of +ListenBacklog backlogsMMaximum length of the queue of pending connections +ListenCoresBucketsRatio ratio 0 (disabled) sMRatio between the number of CPU cores (online) and the number of listeners' buckets -LoadFile filename [filename] ...svELink in the named object file or library -LoadModule module filenamesvELinks in the object file or library, and adds to the list +LoadFile filename [filename] ...svELink in the named object file or library +LoadModule module filenamesvELinks in the object file or library, and adds to the list of active modules -<Location - URL-path|URL> ... </Location>svCApplies the enclosed directives only to matching +<Location + URL-path|URL> ... </Location>svCApplies the enclosed directives only to matching URLs -<LocationMatch - regex> ... </LocationMatch>svCApplies the enclosed directives only to regular-expression +<LocationMatch + regex> ... </LocationMatch>svCApplies the enclosed directives only to regular-expression matching URLs -LogFormat format|nickname -[nickname] "%h %l %u %t \"%r\" +svBDescribes a format for use in a log file -LogIOTrackTTFB ON|OFF OFF svdhEEnable tracking of time to first byte (TTFB) -LogLevel [module:]level +LogFormat format|nickname +[nickname] "%h %l %u %t \"%r\" +svBDescribes a format for use in a log file +LogIOTrackTTFB ON|OFF OFF svdhEEnable tracking of time to first byte (TTFB) +LogLevel [module:]level [module:level] ... - warn svdCControls the verbosity of the ErrorLog -LogMessage message + warn svdCControls the verbosity of the ErrorLog +LogMessage message [hook=hook] [expr=expression] -dXLog user-defined message to error log +dXLog user-defined message to error log -LuaAuthzProvider provider_name /path/to/lua/script.lua function_namesXPlug an authorization provider function into mod_authz_core +LuaAuthzProvider provider_name /path/to/lua/script.lua function_namesXPlug an authorization provider function into mod_authz_core -LuaCodeCache stat|forever|never stat svdhXConfigure the compiled code cache. -LuaHookAccessChecker /path/to/lua/script.lua hook_function_name [early|late]svdhXProvide a hook for the access_checker phase of request processing -LuaHookAuthChecker /path/to/lua/script.lua hook_function_name [early|late]svdhXProvide a hook for the auth_checker phase of request processing -LuaHookCheckUserID /path/to/lua/script.lua hook_function_name [early|late]svdhXProvide a hook for the check_user_id phase of request processing -LuaHookFixups /path/to/lua/script.lua hook_function_namesvdhXProvide a hook for the fixups phase of a request +LuaCodeCache stat|forever|never stat svdhXConfigure the compiled code cache. +LuaHookAccessChecker /path/to/lua/script.lua hook_function_name [early|late]svdhXProvide a hook for the access_checker phase of request processing +LuaHookAuthChecker /path/to/lua/script.lua hook_function_name [early|late]svdhXProvide a hook for the auth_checker phase of request processing +LuaHookCheckUserID /path/to/lua/script.lua hook_function_name [early|late]svdhXProvide a hook for the check_user_id phase of request processing +LuaHookFixups /path/to/lua/script.lua hook_function_namesvdhXProvide a hook for the fixups phase of a request processing -LuaHookInsertFilter /path/to/lua/script.lua hook_function_namesvdhXProvide a hook for the insert_filter phase of request processing -LuaHookLog /path/to/lua/script.lua log_function_namesvdhXProvide a hook for the access log phase of a request +LuaHookInsertFilter /path/to/lua/script.lua hook_function_namesvdhXProvide a hook for the insert_filter phase of request processing +LuaHookLog /path/to/lua/script.lua log_function_namesvdhXProvide a hook for the access log phase of a request processing -LuaHookMapToStorage /path/to/lua/script.lua hook_function_namesvdhXProvide a hook for the map_to_storage phase of request processing -LuaHookTranslateName /path/to/lua/script.lua hook_function_name [early|late]svXProvide a hook for the translate name phase of request processing -LuaHookTypeChecker /path/to/lua/script.lua hook_function_namesvdhXProvide a hook for the type_checker phase of request processing -LuaInherit none|parent-first|parent-last parent-first svdhXControls how parent configuration sections are merged into children -LuaInputFilter filter_name /path/to/lua/script.lua function_namesXProvide a Lua function for content input filtering -LuaMapHandler uri-pattern /path/to/lua/script.lua [function-name]svdhXMap a path to a lua handler -LuaOutputFilter filter_name /path/to/lua/script.lua function_namesXProvide a Lua function for content output filtering -LuaPackageCPath /path/to/include/?.soasvdhXAdd a directory to lua's package.cpath -LuaPackagePath /path/to/include/?.luasvdhXAdd a directory to lua's package.path -LuaQuickHandler /path/to/script.lua hook_function_namesvXProvide a hook for the quick handler of request processing -LuaRoot /path/to/a/directorysvdhXSpecify the base path for resolving relative paths for mod_lua directives -LuaScope once|request|conn|thread|server [min] [max] once svdhXOne of once, request, conn, thread -- default is once - +LuaHookMapToStorage /path/to/lua/script.lua hook_function_namesvdhXProvide a hook for the map_to_storage phase of request processing +LuaHookTranslateName /path/to/lua/script.lua hook_function_name [early|late]svXProvide a hook for the translate name phase of request processing +LuaHookTypeChecker /path/to/lua/script.lua hook_function_namesvdhXProvide a hook for the type_checker phase of request processing +LuaInherit none|parent-first|parent-last parent-first svdhXControls how parent configuration sections are merged into children +LuaInputFilter filter_name /path/to/lua/script.lua function_namesXProvide a Lua function for content input filtering +LuaMapHandler uri-pattern /path/to/lua/script.lua [function-name]svdhXMap a path to a lua handler +LuaOutputFilter filter_name /path/to/lua/script.lua function_namesXProvide a Lua function for content output filtering +LuaPackageCPath /path/to/include/?.soasvdhXAdd a directory to lua's package.cpath +LuaPackagePath /path/to/include/?.luasvdhXAdd a directory to lua's package.path +LuaQuickHandler /path/to/script.lua hook_function_namesvXProvide a hook for the quick handler of request processing +LuaRoot /path/to/a/directorysvdhXSpecify the base path for resolving relative paths for mod_lua directives +LuaScope once|request|conn|thread|server [min] [max] once svdhXOne of once, request, conn, thread -- default is once + <Macro name [par1 .. parN]> -... </Macro>svdBDefine a configuration file macro -MaxConnectionsPerChild number 0 sMLimit on the number of connections that an individual child server +... </Macro>svdBDefine a configuration file macro +MaxConnectionsPerChild number 0 sMLimit on the number of connections that an individual child server will handle during its life -MaxKeepAliveRequests number 100 svCNumber of requests allowed on a persistent +MaxKeepAliveRequests number 100 svCNumber of requests allowed on a persistent connection -MaxMemFree KBytes 2048 sMMaximum amount of memory that the main allocator is allowed +MaxMemFree KBytes 2048 sMMaximum amount of memory that the main allocator is allowed to hold without calling free() -MaxRangeOverlaps default | unlimited | none | number-of-ranges 20 svdCNumber of overlapping ranges (eg: 100-200,150-300) allowed before returning the complete +MaxRangeOverlaps default | unlimited | none | number-of-ranges 20 svdCNumber of overlapping ranges (eg: 100-200,150-300) allowed before returning the complete resource -MaxRangeReversals default | unlimited | none | number-of-ranges 20 svdCNumber of range reversals (eg: 100-200,50-70) allowed before returning the complete +MaxRangeReversals default | unlimited | none | number-of-ranges 20 svdCNumber of range reversals (eg: 100-200,50-70) allowed before returning the complete resource -MaxRanges default | unlimited | none | number-of-ranges 200 svdCNumber of ranges allowed before returning the complete +MaxRanges default | unlimited | none | number-of-ranges 200 svdCNumber of ranges allowed before returning the complete resource -MaxRequestWorkers numbersMMaximum number of connections that will be processed +MaxRequestWorkers numbersMMaximum number of connections that will be processed simultaneously -MaxSpareServers number 10 sMMaximum number of idle child server processes -MaxSpareThreads numbersMMaximum number of idle threads -MaxThreads number 2048 sMSet the maximum number of worker threads -MemcacheConnTTL num[units] 15s svEKeepalive time for idle connections -MergeTrailers [on|off] off svCDetermines whether trailers are merged into headers -MetaDir directory .web svdhEName of the directory to find CERN-style meta information +MaxSpareServers number 10 sMMaximum number of idle child server processes +MaxSpareThreads numbersMMaximum number of idle threads +MaxThreads number 2048 sMSet the maximum number of worker threads +MemcacheConnTTL num[units] 15s svEKeepalive time for idle connections +MergeTrailers [on|off] off svCDetermines whether trailers are merged into headers +MetaDir directory .web svdhEName of the directory to find CERN-style meta information files -MetaFiles on|off off svdhEActivates CERN meta-file processing -MetaSuffix suffix .meta svdhEFile name suffix for the file containing CERN-style +MetaFiles on|off off svdhEActivates CERN meta-file processing +MetaSuffix suffix .meta svdhEFile name suffix for the file containing CERN-style meta information -MimeMagicFile file-pathsvEEnable MIME-type determination based on file contents +MimeMagicFile file-pathsvEEnable MIME-type determination based on file contents using the specified magic file -MinSpareServers number 5 sMMinimum number of idle child server processes -MinSpareThreads numbersMMinimum number of idle threads available to handle request +MinSpareServers number 5 sMMinimum number of idle child server processes +MinSpareThreads numbersMMinimum number of idle threads available to handle request spikes -MMapFile file-path [file-path] ...sXMap a list of files into memory at startup time -ModemStandard V.21|V.26bis|V.32|V.34|V.92dXModem standard to simulate -ModMimeUsePathInfo On|Off Off dBTells mod_mime to treat path_info +MMapFile file-path [file-path] ...sXMap a list of files into memory at startup time +ModemStandard V.21|V.26bis|V.32|V.34|V.92dXModem standard to simulate +ModMimeUsePathInfo On|Off Off dBTells mod_mime to treat path_info components as part of the filename -MultiviewsMatch Any|NegotiatedOnly|Filters|Handlers -[Handlers|Filters] NegotiatedOnly svdhBThe types of files that will be included when searching for +MultiviewsMatch Any|NegotiatedOnly|Filters|Handlers +[Handlers|Filters] NegotiatedOnly svdhBThe types of files that will be included when searching for a matching file with MultiViews -Mutex mechanism [default|mutex-name] ... [OmitPID] default sCConfigures mutex mechanism and lock file directory for all +Mutex mechanism [default|mutex-name] ... [OmitPID] default sCConfigures mutex mechanism and lock file directory for all or specified mutexes -NameVirtualHost addr[:port]sCDEPRECATED: Designates an IP address for name-virtual +NameVirtualHost addr[:port]sCDEPRECATED: Designates an IP address for name-virtual hosting -NoProxy host [host] ...svEHosts, domains, or networks that will be connected to +NoProxy host [host] ...svEHosts, domains, or networks that will be connected to directly -NWSSLTrustedCerts filename [filename] ...sBList of additional client certificates -NWSSLUpgradeable [IP-address:]portnumbersBAllows a connection to be upgraded to an SSL connection upon request -Options - [+|-]option [[+|-]option] ... FollowSymlinks svdhCConfigures what features are available in a particular +NWSSLTrustedCerts filename [filename] ...sBList of additional client certificates +NWSSLUpgradeable [IP-address:]portnumbersBAllows a connection to be upgraded to an SSL connection upon request +Options + [+|-]option [[+|-]option] ... FollowSymlinks svdhCConfigures what features are available in a particular directory - Order ordering Deny,Allow dhEControls the default access state and the order in which + Order ordering Deny,Allow dhEControls the default access state and the order in which Allow and Deny are evaluated. -OutputSed sed-commanddhXSed command for filtering response content -PassEnv env-variable [env-variable] -...svdhBPasses environment variables from the shell -PidFile filename logs/httpd.pid sMFile where the server records the process ID +OutputSed sed-commanddhXSed command for filtering response content +PassEnv env-variable [env-variable] +...svdhBPasses environment variables from the shell +PidFile filename logs/httpd.pid sMFile where the server records the process ID of the daemon -PrivilegesMode FAST|SECURE|SELECTIVE FAST svdXTrade off processing speed and efficiency vs security against +PrivilegesMode FAST|SECURE|SELECTIVE FAST svdXTrade off processing speed and efficiency vs security against malicious privileges-aware code. -Protocol protocolsvCProtocol for a listening socket -ProtocolEcho On|Off Off svXTurn the echo server on or off -Protocols protocol ... http/1.1 svCProtocols available for a server/virtual host -ProtocolsHonorOrder On|Off On svCDetermines if order of Protocols determines precedence during negotiation -<Proxy wildcard-url> ...</Proxy>svEContainer for directives applied to proxied resources -ProxyAddHeaders Off|On On svdEAdd proxy information in X-Forwarded-* headers -ProxyBadHeader IsError|Ignore|StartBody IsError svEDetermines how to handle bad header lines in a +Protocol protocolsvCProtocol for a listening socket +ProtocolEcho On|Off Off svXTurn the echo server on or off +Protocols protocol ... http/1.1 svCProtocols available for a server/virtual host +ProtocolsHonorOrder On|Off On svCDetermines if order of Protocols determines precedence during negotiation +<Proxy wildcard-url> ...</Proxy>svEContainer for directives applied to proxied resources +ProxyAddHeaders Off|On On svdEAdd proxy information in X-Forwarded-* headers +ProxyBadHeader IsError|Ignore|StartBody IsError svEDetermines how to handle bad header lines in a response -ProxyBlock *|word|host|domain -[word|host|domain] ...svEWords, hosts, or domains that are banned from being +ProxyBlock *|word|host|domain +[word|host|domain] ...svEWords, hosts, or domains that are banned from being proxied -ProxyDomain DomainsvEDefault domain name for proxied requests -ProxyErrorOverride On|Off Off svdEOverride error pages for proxied content -ProxyExpressDBMFile <pathname>svEPathname to DBM file. -ProxyExpressDBMFile <type>svEDBM type of file. -ProxyExpressEnable [on|off]svEEnable the module functionality. -ProxyFtpDirCharset character set ISO-8859-1 svdEDefine the character set for proxied FTP listings -ProxyFtpEscapeWildcards [on|off]svdEWhether wildcards in requested filenames are escaped when sent to the FTP server -ProxyFtpListOnWildcard [on|off]svdEWhether wildcards in requested filenames trigger a file listing -ProxyHCExpr name {ap_expr expression}svECreates a named condition expression to use to determine health of the backend based on its response. -ProxyHCTemplate name parameter=setting <...>svECreates a named template for setting various health check parameters -ProxyHCTPsize <size>svESets the size of the threadpool used for the health check workers. -ProxyHTMLBufSize bytessvdBSets the buffer size increment for buffering inline scripts and +ProxyDomain DomainsvEDefault domain name for proxied requests +ProxyErrorOverride On|Off Off svdEOverride error pages for proxied content +ProxyExpressDBMFile <pathname>svEPathname to DBM file. +ProxyExpressDBMFile <type>svEDBM type of file. +ProxyExpressEnable [on|off]svEEnable the module functionality. +ProxyFtpDirCharset character set ISO-8859-1 svdEDefine the character set for proxied FTP listings +ProxyFtpEscapeWildcards [on|off]svdEWhether wildcards in requested filenames are escaped when sent to the FTP server +ProxyFtpListOnWildcard [on|off]svdEWhether wildcards in requested filenames trigger a file listing +ProxyHCExpr name {ap_expr expression}svECreates a named condition expression to use to determine health of the backend based on its response. +ProxyHCTemplate name parameter=setting <...>svECreates a named template for setting various health check parameters +ProxyHCTPsize <size>svESets the size of the threadpool used for the health check workers. +ProxyHTMLBufSize bytessvdBSets the buffer size increment for buffering inline scripts and stylesheets. -ProxyHTMLCharsetOut Charset | *svdBSpecify a charset for mod_proxy_html output. -ProxyHTMLDocType HTML|XHTML [Legacy]
    OR -
    ProxyHTMLDocType fpi [SGML|XML]
    svdBSets an HTML or XHTML document type declaration. -ProxyHTMLEnable On|Off Off svdBTurns the proxy_html filter on or off. -ProxyHTMLEvents attribute [attribute ...]svdBSpecify attributes to treat as scripting events. -ProxyHTMLExtended On|Off Off svdBDetermines whether to fix links in inline scripts, stylesheets, +ProxyHTMLCharsetOut Charset | *svdBSpecify a charset for mod_proxy_html output. +ProxyHTMLDocType HTML|XHTML [Legacy]
    OR +
    ProxyHTMLDocType fpi [SGML|XML]
    svdBSets an HTML or XHTML document type declaration. +ProxyHTMLEnable On|Off Off svdBTurns the proxy_html filter on or off. +ProxyHTMLEvents attribute [attribute ...]svdBSpecify attributes to treat as scripting events. +ProxyHTMLExtended On|Off Off svdBDetermines whether to fix links in inline scripts, stylesheets, and scripting events. -ProxyHTMLFixups [lowercase] [dospath] [reset]svdBFixes for simple HTML errors. -ProxyHTMLInterp On|Off Off svdBEnables per-request interpolation of +ProxyHTMLFixups [lowercase] [dospath] [reset]svdBFixes for simple HTML errors. +ProxyHTMLInterp On|Off Off svdBEnables per-request interpolation of ProxyHTMLURLMap rules. -ProxyHTMLLinks element attribute [attribute2 ...]svdBSpecify HTML elements that have URL attributes to be rewritten. -ProxyHTMLMeta On|Off Off svdBTurns on or off extra pre-parsing of metadata in HTML +ProxyHTMLLinks element attribute [attribute2 ...]svdBSpecify HTML elements that have URL attributes to be rewritten. +ProxyHTMLMeta On|Off Off svdBTurns on or off extra pre-parsing of metadata in HTML <head> sections. -ProxyHTMLStripComments On|Off Off svdBDetermines whether to strip HTML comments. -ProxyHTMLURLMap from-pattern to-pattern [flags] [cond]svdBDefines a rule to rewrite HTML links -ProxyIOBufferSize bytes 8192 svEDetermine size of internal data throughput buffer -<ProxyMatch regex> ...</ProxyMatch>svEContainer for directives applied to regular-expression-matched +ProxyHTMLStripComments On|Off Off svdBDetermines whether to strip HTML comments. +ProxyHTMLURLMap from-pattern to-pattern [flags] [cond]svdBDefines a rule to rewrite HTML links +ProxyIOBufferSize bytes 8192 svEDetermine size of internal data throughput buffer +<ProxyMatch regex> ...</ProxyMatch>svEContainer for directives applied to regular-expression-matched proxied resources -ProxyMaxForwards number -1 svEMaximium number of proxies that a request can be forwarded +ProxyMaxForwards number -1 svEMaximium number of proxies that a request can be forwarded through -ProxyPass [path] !|url [key=value - [key=value ...]] [nocanon] [interpolate] [noquery]svdEMaps remote servers into the local server URL-space -ProxyPassInherit On|Off On svEInherit ProxyPass directives defined from the main server -ProxyPassInterpolateEnv On|Off Off svdEEnable Environment Variable interpolation in Reverse Proxy configurations -ProxyPassMatch [regex] !|url [key=value - [key=value ...]]svdEMaps remote servers into the local server URL-space using regular expressions -ProxyPassReverse [path] url -[interpolate]svdEAdjusts the URL in HTTP response headers sent from a reverse +ProxyPass [path] !|url [key=value + [key=value ...]] [nocanon] [interpolate] [noquery]svdEMaps remote servers into the local server URL-space +ProxyPassInherit On|Off On svEInherit ProxyPass directives defined from the main server +ProxyPassInterpolateEnv On|Off Off svdEEnable Environment Variable interpolation in Reverse Proxy configurations +ProxyPassMatch [regex] !|url [key=value + [key=value ...]]svdEMaps remote servers into the local server URL-space using regular expressions +ProxyPassReverse [path] url +[interpolate]svdEAdjusts the URL in HTTP response headers sent from a reverse proxied server -ProxyPassReverseCookieDomain internal-domain -public-domain [interpolate]svdEAdjusts the Domain string in Set-Cookie headers from a reverse- +ProxyPassReverseCookieDomain internal-domain +public-domain [interpolate]svdEAdjusts the Domain string in Set-Cookie headers from a reverse- proxied server -ProxyPassReverseCookiePath internal-path -public-path [interpolate]svdEAdjusts the Path string in Set-Cookie headers from a reverse- +ProxyPassReverseCookiePath internal-path +public-path [interpolate]svdEAdjusts the Path string in Set-Cookie headers from a reverse- proxied server -ProxyPreserveHost On|Off Off svdEUse incoming Host HTTP request header for proxy +ProxyPreserveHost On|Off Off svdEUse incoming Host HTTP request header for proxy request -ProxyReceiveBufferSize bytes 0 svENetwork buffer size for proxied HTTP and FTP +ProxyReceiveBufferSize bytes 0 svENetwork buffer size for proxied HTTP and FTP connections -ProxyRemote match remote-serversvERemote proxy used to handle certain requests -ProxyRemoteMatch regex remote-serversvERemote proxy used to handle requests matched by regular +ProxyRemote match remote-serversvERemote proxy used to handle certain requests +ProxyRemoteMatch regex remote-serversvERemote proxy used to handle requests matched by regular expressions -ProxyRequests On|Off Off svEEnables forward (standard) proxy requests -ProxySCGIInternalRedirect On|Off|Headername On svdEEnable or disable internal redirect responses from the +ProxyRequests On|Off Off svEEnables forward (standard) proxy requests +ProxySCGIInternalRedirect On|Off|Headername On svdEEnable or disable internal redirect responses from the backend -ProxySCGISendfile On|Off|Headername Off svdEEnable evaluation of X-Sendfile pseudo response +ProxySCGISendfile On|Off|Headername Off svdEEnable evaluation of X-Sendfile pseudo response header -ProxySet url key=value [key=value ...]dESet various Proxy balancer or member parameters -ProxySourceAddress addresssvESet local IP address for outgoing proxy connections -ProxyStatus Off|On|Full Off svEShow Proxy LoadBalancer status in mod_status -ProxyTimeout secondssvENetwork timeout for proxied requests -ProxyVia On|Off|Full|Block Off svEInformation provided in the Via HTTP response +ProxySet url key=value [key=value ...]dESet various Proxy balancer or member parameters +ProxySourceAddress addresssvESet local IP address for outgoing proxy connections +ProxyStatus Off|On|Full Off svEShow Proxy LoadBalancer status in mod_status +ProxyTimeout secondssvENetwork timeout for proxied requests +ProxyVia On|Off|Full|Block Off svEInformation provided in the Via HTTP response header for proxied requests -QualifyRedirectURL ON|OFF OFF svdCControls whether the REDIRECT_URL environment variable is +QualifyRedirectURL ON|OFF OFF svdCControls whether the REDIRECT_URL environment variable is fully qualified -ReadmeName filenamesvdhBName of the file that will be inserted at the end +ReadmeName filenamesvdhBName of the file that will be inserted at the end of the index listing -ReceiveBufferSize bytes 0 sMTCP receive buffer size -Redirect [status] [URL-path] -URLsvdhBSends an external redirect asking the client to fetch +ReceiveBufferSize bytes 0 sMTCP receive buffer size +Redirect [status] [URL-path] +URLsvdhBSends an external redirect asking the client to fetch a different URL -RedirectMatch [status] regex -URLsvdhBSends an external redirect based on a regular expression match +RedirectMatch [status] regex +URLsvdhBSends an external redirect based on a regular expression match of the current URL -RedirectPermanent URL-path URLsvdhBSends an external permanent redirect asking the client to fetch +RedirectPermanent URL-path URLsvdhBSends an external permanent redirect asking the client to fetch a different URL -RedirectTemp URL-path URLsvdhBSends an external temporary redirect asking the client to fetch +RedirectTemp URL-path URLsvdhBSends an external temporary redirect asking the client to fetch a different URL -ReflectorHeader inputheader [outputheader]svdhBReflect an input header to the output headers -RemoteIPHeader header-fieldsvBDeclare the header field which should be parsed for useragent IP addresses -RemoteIPInternalProxy proxy-ip|proxy-ip/subnet|hostname ...svBDeclare client intranet IP addresses trusted to present the RemoteIPHeader value -RemoteIPInternalProxyList filenamesvBDeclare client intranet IP addresses trusted to present the RemoteIPHeader value -RemoteIPProxiesHeader HeaderFieldNamesvBDeclare the header field which will record all intermediate IP addresses -RemoteIPTrustedProxy proxy-ip|proxy-ip/subnet|hostname ...svBDeclare client intranet IP addresses trusted to present the RemoteIPHeader value -RemoteIPTrustedProxyList filenamesvBDeclare client intranet IP addresses trusted to present the RemoteIPHeader value -RemoveCharset extension [extension] -...vdhBRemoves any character set associations for a set of file +ReflectorHeader inputheader [outputheader]svdhBReflect an input header to the output headers +RemoteIPHeader header-fieldsvBDeclare the header field which should be parsed for useragent IP addresses +RemoteIPInternalProxy proxy-ip|proxy-ip/subnet|hostname ...svBDeclare client intranet IP addresses trusted to present the RemoteIPHeader value +RemoteIPInternalProxyList filenamesvBDeclare client intranet IP addresses trusted to present the RemoteIPHeader value +RemoteIPProxiesHeader HeaderFieldNamesvBDeclare the header field which will record all intermediate IP addresses +RemoteIPTrustedProxy proxy-ip|proxy-ip/subnet|hostname ...svBDeclare client intranet IP addresses trusted to present the RemoteIPHeader value +RemoteIPTrustedProxyList filenamesvBDeclare client intranet IP addresses trusted to present the RemoteIPHeader value +RemoveCharset extension [extension] +...vdhBRemoves any character set associations for a set of file extensions -RemoveEncoding extension [extension] -...vdhBRemoves any content encoding associations for a set of file +RemoveEncoding extension [extension] +...vdhBRemoves any content encoding associations for a set of file extensions -RemoveHandler extension [extension] -...vdhBRemoves any handler associations for a set of file +RemoveHandler extension [extension] +...vdhBRemoves any handler associations for a set of file extensions -RemoveInputFilter extension [extension] -...vdhBRemoves any input filter associations for a set of file +RemoveInputFilter extension [extension] +...vdhBRemoves any input filter associations for a set of file extensions -RemoveLanguage extension [extension] -...vdhBRemoves any language associations for a set of file +RemoveLanguage extension [extension] +...vdhBRemoves any language associations for a set of file extensions -RemoveOutputFilter extension [extension] -...vdhBRemoves any output filter associations for a set of file +RemoveOutputFilter extension [extension] +...vdhBRemoves any output filter associations for a set of file extensions -RemoveType extension [extension] -...vdhBRemoves any content type associations for a set of file +RemoveType extension [extension] +...vdhBRemoves any content type associations for a set of file extensions -RequestHeader add|append|edit|edit*|merge|set|setifempty|unset +RequestHeader add|append|edit|edit*|merge|set|setifempty|unset header [[expr=]value [replacement] [early|env=[!]varname|expr=expression]] -svdhEConfigure HTTP request headers -RequestReadTimeout +svdhEConfigure HTTP request headers +RequestReadTimeout [header=timeout[-maxtimeout][,MinRate=rate] [body=timeout[-maxtimeout][,MinRate=rate] -svESet timeout values for receiving request headers and body from client. +svESet timeout values for receiving request headers and body from client. -Require [not] entity-name - [entity-name] ...dhBTests whether an authenticated user is authorized by +Require [not] entity-name + [entity-name] ...dhBTests whether an authenticated user is authorized by an authorization provider. -<RequireAll> ... </RequireAll>dhBEnclose a group of authorization directives of which none +<RequireAll> ... </RequireAll>dhBEnclose a group of authorization directives of which none must fail and at least one must succeed for the enclosing directive to succeed. -<RequireAny> ... </RequireAny>dhBEnclose a group of authorization directives of which one +<RequireAny> ... </RequireAny>dhBEnclose a group of authorization directives of which one must succeed for the enclosing directive to succeed. -<RequireNone> ... </RequireNone>dhBEnclose a group of authorization directives of which none +<RequireNone> ... </RequireNone>dhBEnclose a group of authorization directives of which none must succeed for the enclosing directive to not fail. -RewriteBase URL-pathdhESets the base URL for per-directory rewrites - RewriteCond - TestString CondPattern [flags]svdhEDefines a condition under which rewriting will take place +RewriteBase URL-pathdhESets the base URL for per-directory rewrites + RewriteCond + TestString CondPattern [flags]svdhEDefines a condition under which rewriting will take place -RewriteEngine on|off off svdhEEnables or disables runtime rewriting engine -RewriteMap MapName MapType:MapSource -svEDefines a mapping function for key-lookup -RewriteOptions OptionssvdhESets some special options for the rewrite engine -RewriteRule - Pattern Substitution [flags]svdhEDefines rules for the rewriting engine -RLimitCPU seconds|max [seconds|max]svdhCLimits the CPU consumption of processes launched +RewriteEngine on|off off svdhEEnables or disables runtime rewriting engine +RewriteMap MapName MapType:MapSource +svEDefines a mapping function for key-lookup +RewriteOptions OptionssvdhESets some special options for the rewrite engine +RewriteRule + Pattern Substitution [flags]svdhEDefines rules for the rewriting engine +RLimitCPU seconds|max [seconds|max]svdhCLimits the CPU consumption of processes launched by Apache httpd children -RLimitMEM bytes|max [bytes|max]svdhCLimits the memory consumption of processes launched +RLimitMEM bytes|max [bytes|max]svdhCLimits the memory consumption of processes launched by Apache httpd children -RLimitNPROC number|max [number|max]svdhCLimits the number of processes that can be launched by +RLimitNPROC number|max [number|max]svdhCLimits the number of processes that can be launched by processes launched by Apache httpd children -Satisfy Any|All All dhEInteraction between host-level access control and +Satisfy Any|All All dhEInteraction between host-level access control and user authentication -ScoreBoardFile file-path logs/apache_runtime +sMLocation of the file used to store coordination data for +ScoreBoardFile file-path logs/apache_runtime +sMLocation of the file used to store coordination data for the child processes -Script method cgi-scriptsvdBActivates a CGI script for a particular request +Script method cgi-scriptsvdBActivates a CGI script for a particular request method. -ScriptAlias [URL-path] -file-path|directory-pathsvdBMaps a URL to a filesystem location and designates the +ScriptAlias [URL-path] +file-path|directory-pathsvdBMaps a URL to a filesystem location and designates the target as a CGI script -ScriptAliasMatch regex -file-path|directory-pathsvBMaps a URL to a filesystem location using a regular expression +ScriptAliasMatch regex +file-path|directory-pathsvBMaps a URL to a filesystem location using a regular expression and designates the target as a CGI script -ScriptInterpreterSource Registry|Registry-Strict|Script Script svdhCTechnique for locating the interpreter for CGI +ScriptInterpreterSource Registry|Registry-Strict|Script Script svdhCTechnique for locating the interpreter for CGI scripts -ScriptLog file-pathsvBLocation of the CGI script error logfile -ScriptLogBuffer bytes 1024 svBMaximum amount of PUT or POST requests that will be recorded +ScriptLog file-pathsvBLocation of the CGI script error logfile +ScriptLogBuffer bytes 1024 svBMaximum amount of PUT or POST requests that will be recorded in the scriptlog -ScriptLogLength bytes 10385760 svBSize limit of the CGI script logfile -ScriptSock file-path cgisock sBThe filename prefix of the socket to use for communication with +ScriptLogLength bytes 10385760 svBSize limit of the CGI script logfile +ScriptSock file-path cgisock sBThe filename prefix of the socket to use for communication with the cgi daemon -SecureListen [IP-address:]portnumber -Certificate-Name [MUTUAL]sBEnables SSL encryption for the specified port -SeeRequestTail On|Off Off sCDetermine if mod_status displays the first 63 characters +SecureListen [IP-address:]portnumber +Certificate-Name [MUTUAL]sBEnables SSL encryption for the specified port +SeeRequestTail On|Off Off sCDetermine if mod_status displays the first 63 characters of a request or the last 63, assuming the request itself is greater than 63 chars. -SendBufferSize bytes 0 sMTCP buffer size -ServerAdmin email-address|URLsvCEmail address that the server includes in error +SendBufferSize bytes 0 sMTCP buffer size +ServerAdmin email-address|URLsvCEmail address that the server includes in error messages sent to the client -ServerAlias hostname [hostname] ...vCAlternate names for a host used when matching requests +ServerAlias hostname [hostname] ...vCAlternate names for a host used when matching requests to name-virtual hosts -ServerLimit numbersMUpper limit on configurable number of processes -ServerName [scheme://]domain-name|ip-address[:port]svCHostname and port that the server uses to identify +ServerLimit numbersMUpper limit on configurable number of processes +ServerName [scheme://]domain-name|ip-address[:port]svCHostname and port that the server uses to identify itself -ServerPath URL-pathvCLegacy URL pathname for a name-based virtual host that +ServerPath URL-pathvCLegacy URL pathname for a name-based virtual host that is accessed by an incompatible browser -ServerRoot directory-path /usr/local/apache sCBase directory for the server installation -ServerSignature On|Off|EMail Off svdhCConfigures the footer on server-generated documents -ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full Full sCConfigures the Server HTTP response +ServerRoot directory-path /usr/local/apache sCBase directory for the server installation +ServerSignature On|Off|EMail Off svdhCConfigures the footer on server-generated documents +ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full Full sCConfigures the Server HTTP response header -Session On|Off Off svdhEEnables a session for the current directory or location -SessionCookieName name attributessvdhEName and attributes for the RFC2109 cookie storing the session -SessionCookieName2 name attributessvdhEName and attributes for the RFC2965 cookie storing the session -SessionCookieRemove On|Off Off svdhEControl for whether session cookies should be removed from incoming HTTP headers -SessionCryptoCipher namesvdhXThe crypto cipher to be used to encrypt the session -SessionCryptoDriver name [param[=value]]sXThe crypto driver to be used to encrypt the session -SessionCryptoPassphrase secret [ secret ... ] svdhXThe key used to encrypt the session -SessionCryptoPassphraseFile filenamesvdXFile containing keys used to encrypt the session -SessionDBDCookieName name attributessvdhEName and attributes for the RFC2109 cookie storing the session ID -SessionDBDCookieName2 name attributessvdhEName and attributes for the RFC2965 cookie storing the session ID -SessionDBDCookieRemove On|Off On svdhEControl for whether session ID cookies should be removed from incoming HTTP headers -SessionDBDDeleteLabel label deletesession svdhEThe SQL query to use to remove sessions from the database -SessionDBDInsertLabel label insertsession svdhEThe SQL query to use to insert sessions into the database -SessionDBDPerUser On|Off Off svdhEEnable a per user session -SessionDBDSelectLabel label selectsession svdhEThe SQL query to use to select sessions from the database -SessionDBDUpdateLabel label updatesession svdhEThe SQL query to use to update existing sessions in the database -SessionEnv On|Off Off svdhEControl whether the contents of the session are written to the +Session On|Off Off svdhEEnables a session for the current directory or location +SessionCookieName name attributessvdhEName and attributes for the RFC2109 cookie storing the session +SessionCookieName2 name attributessvdhEName and attributes for the RFC2965 cookie storing the session +SessionCookieRemove On|Off Off svdhEControl for whether session cookies should be removed from incoming HTTP headers +SessionCryptoCipher namesvdhXThe crypto cipher to be used to encrypt the session +SessionCryptoDriver name [param[=value]]sXThe crypto driver to be used to encrypt the session +SessionCryptoPassphrase secret [ secret ... ] svdhXThe key used to encrypt the session +SessionCryptoPassphraseFile filenamesvdXFile containing keys used to encrypt the session +SessionDBDCookieName name attributessvdhEName and attributes for the RFC2109 cookie storing the session ID +SessionDBDCookieName2 name attributessvdhEName and attributes for the RFC2965 cookie storing the session ID +SessionDBDCookieRemove On|Off On svdhEControl for whether session ID cookies should be removed from incoming HTTP headers +SessionDBDDeleteLabel label deletesession svdhEThe SQL query to use to remove sessions from the database +SessionDBDInsertLabel label insertsession svdhEThe SQL query to use to insert sessions into the database +SessionDBDPerUser On|Off Off svdhEEnable a per user session +SessionDBDSelectLabel label selectsession svdhEThe SQL query to use to select sessions from the database +SessionDBDUpdateLabel label updatesession svdhEThe SQL query to use to update existing sessions in the database +SessionEnv On|Off Off svdhEControl whether the contents of the session are written to the HTTP_SESSION environment variable -SessionExclude pathsvdhEDefine URL prefixes for which a session is ignored -SessionHeader headersvdhEImport session updates from a given HTTP response header -SessionInclude pathsvdhEDefine URL prefixes for which a session is valid -SessionMaxAge maxage 0 svdhEDefine a maximum age in seconds for a session -SetEnv env-variable [value]svdhBSets environment variables -SetEnvIf attribute +SessionExclude pathsvdhEDefine URL prefixes for which a session is ignored +SessionHeader headersvdhEImport session updates from a given HTTP response header +SessionInclude pathsvdhEDefine URL prefixes for which a session is valid +SessionMaxAge maxage 0 svdhEDefine a maximum age in seconds for a session +SetEnv env-variable [value]svdhBSets environment variables +SetEnvIf attribute regex [!]env-variable[=value] - [[!]env-variable[=value]] ...svdhBSets environment variables based on attributes of the request + [[!]env-variable[=value]] ...svdhBSets environment variables based on attributes of the request -SetEnvIfExpr expr +SetEnvIfExpr expr [!]env-variable[=value] - [[!]env-variable[=value]] ...svdhBSets environment variables based on an ap_expr expression -SetEnvIfNoCase attribute regex + [[!]env-variable[=value]] ...svdhBSets environment variables based on an ap_expr expression +SetEnvIfNoCase attribute regex [!]env-variable[=value] - [[!]env-variable[=value]] ...svdhBSets environment variables based on attributes of the request + [[!]env-variable[=value]] ...svdhBSets environment variables based on attributes of the request without respect to case -SetHandler handler-name|none|expressionsvdhCForces all matching files to be processed by a +SetHandler handler-name|none|expressionsvdhCForces all matching files to be processed by a handler -SetInputFilter filter[;filter...]svdhCSets the filters that will process client requests and POST +SetInputFilter filter[;filter...]svdhCSets the filters that will process client requests and POST input -SetOutputFilter filter[;filter...]svdhCSets the filters that will process responses from the +SetOutputFilter filter[;filter...]svdhCSets the filters that will process responses from the server -SSIEndTag tag "-->" svBString that ends an include element -SSIErrorMsg message "[an error occurred +svdhBError message displayed when there is an SSI +SSIEndTag tag "-->" svBString that ends an include element +SSIErrorMsg message "[an error occurred +svdhBError message displayed when there is an SSI error -SSIETag on|off off dhBControls whether ETags are generated by the server. -SSILastModified on|off off dhBControls whether Last-Modified headers are generated by the +SSIETag on|off off dhBControls whether ETags are generated by the server. +SSILastModified on|off off dhBControls whether Last-Modified headers are generated by the server. -SSILegacyExprParser on|off off dhBEnable compatibility mode for conditional expressions. -SSIStartTag tag "<!--#" svBString that starts an include element -SSITimeFormat formatstring "%A, %d-%b-%Y %H:%M +svdhBConfigures the format in which date strings are +SSILegacyExprParser on|off off dhBEnable compatibility mode for conditional expressions. +SSIStartTag tag "<!--#" svBString that starts an include element +SSITimeFormat formatstring "%A, %d-%b-%Y %H:%M +svdhBConfigures the format in which date strings are displayed -SSIUndefinedEcho string "(none)" svdhBString displayed when an unset variable is echoed -SSLCACertificateFile file-pathsvEFile of concatenated PEM-encoded CA Certificates +SSIUndefinedEcho string "(none)" svdhBString displayed when an unset variable is echoed +SSLCACertificateFile file-pathsvEFile of concatenated PEM-encoded CA Certificates for Client Auth -SSLCACertificatePath directory-pathsvEDirectory of PEM-encoded CA Certificates for +SSLCACertificatePath directory-pathsvEDirectory of PEM-encoded CA Certificates for Client Auth -SSLCADNRequestFile file-pathsvEFile of concatenated PEM-encoded CA Certificates +SSLCADNRequestFile file-pathsvEFile of concatenated PEM-encoded CA Certificates for defining acceptable CA names -SSLCADNRequestPath directory-pathsvEDirectory of PEM-encoded CA Certificates for +SSLCADNRequestPath directory-pathsvEDirectory of PEM-encoded CA Certificates for defining acceptable CA names -SSLCARevocationCheck chain|leaf|none flags none svEEnable CRL-based revocation checking -SSLCARevocationFile file-pathsvEFile of concatenated PEM-encoded CA CRLs for +SSLCARevocationCheck chain|leaf|none flags none svEEnable CRL-based revocation checking +SSLCARevocationFile file-pathsvEFile of concatenated PEM-encoded CA CRLs for Client Auth -SSLCARevocationPath directory-pathsvEDirectory of PEM-encoded CA CRLs for +SSLCARevocationPath directory-pathsvEDirectory of PEM-encoded CA CRLs for Client Auth -SSLCertificateChainFile file-pathsvEFile of PEM-encoded Server CA Certificates -SSLCertificateFile file-pathsvEServer PEM-encoded X.509 certificate data file -SSLCertificateKeyFile file-pathsvEServer PEM-encoded private key file -SSLCipherSuite cipher-spec DEFAULT (depends on +svdhECipher Suite available for negotiation in SSL +SSLCertificateChainFile file-pathsvEFile of PEM-encoded Server CA Certificates +SSLCertificateFile file-pathsvEServer PEM-encoded X.509 certificate data file +SSLCertificateKeyFile file-pathsvEServer PEM-encoded private key file +SSLCipherSuite cipher-spec DEFAULT (depends on +svdhECipher Suite available for negotiation in SSL handshake -SSLCompression on|off off svEEnable compression on the SSL level -SSLCryptoDevice engine builtin sEEnable use of a cryptographic hardware accelerator -SSLEngine on|off|optional off svESSL Engine Operation Switch -SSLFIPS on|off off sESSL FIPS mode Switch -SSLHonorCipherOrder on|off off svEOption to prefer the server's cipher preference order -SSLInsecureRenegotiation on|off off svEOption to enable support for insecure renegotiation -SSLOCSDefaultResponder urisvESet the default responder URI for OCSP validation -SSLOCSPEnable on|off off svEEnable OCSP validation of the client certificate chain -SSLOCSPOverrideResponder on|off off svEForce use of the default responder URI for OCSP validation -SSLOCSPProxyURL urlsvEProxy URL to use for OCSP requests -SSLOCSPResponderTimeout seconds 10 svETimeout for OCSP queries -SSLOCSPResponseMaxAge seconds -1 svEMaximum allowable age for OCSP responses -SSLOCSPResponseTimeSkew seconds 300 svEMaximum allowable time skew for OCSP response validation -SSLOCSPUseRequestNonce on|off on svEUse a nonce within OCSP queries -SSLOpenSSLConfCmd command-name command-valuesvEConfigure OpenSSL parameters through its SSL_CONF API -SSLOptions [+|-]option ...svdhEConfigure various SSL engine run-time options -SSLPassPhraseDialog type builtin sEType of pass phrase dialog for encrypted private +SSLCompression on|off off svEEnable compression on the SSL level +SSLCryptoDevice engine builtin sEEnable use of a cryptographic hardware accelerator +SSLEngine on|off|optional off svESSL Engine Operation Switch +SSLFIPS on|off off sESSL FIPS mode Switch +SSLHonorCipherOrder on|off off svEOption to prefer the server's cipher preference order +SSLInsecureRenegotiation on|off off svEOption to enable support for insecure renegotiation +SSLOCSDefaultResponder urisvESet the default responder URI for OCSP validation +SSLOCSPEnable on|off off svEEnable OCSP validation of the client certificate chain +SSLOCSPOverrideResponder on|off off svEForce use of the default responder URI for OCSP validation +SSLOCSPProxyURL urlsvEProxy URL to use for OCSP requests +SSLOCSPResponderTimeout seconds 10 svETimeout for OCSP queries +SSLOCSPResponseMaxAge seconds -1 svEMaximum allowable age for OCSP responses +SSLOCSPResponseTimeSkew seconds 300 svEMaximum allowable time skew for OCSP response validation +SSLOCSPUseRequestNonce on|off on svEUse a nonce within OCSP queries +SSLOpenSSLConfCmd command-name command-valuesvEConfigure OpenSSL parameters through its SSL_CONF API +SSLOptions [+|-]option ...svdhEConfigure various SSL engine run-time options +SSLPassPhraseDialog type builtin sEType of pass phrase dialog for encrypted private keys -SSLProtocol [+|-]protocol ... all -SSLv3 (up to 2 +svEConfigure usable SSL/TLS protocol versions -SSLProxyCACertificateFile file-pathsvEFile of concatenated PEM-encoded CA Certificates +SSLProtocol [+|-]protocol ... all -SSLv3 (up to 2 +svEConfigure usable SSL/TLS protocol versions +SSLProxyCACertificateFile file-pathsvEFile of concatenated PEM-encoded CA Certificates for Remote Server Auth -SSLProxyCACertificatePath directory-pathsvEDirectory of PEM-encoded CA Certificates for +SSLProxyCACertificatePath directory-pathsvEDirectory of PEM-encoded CA Certificates for Remote Server Auth -SSLProxyCARevocationCheck chain|leaf|none none svEEnable CRL-based revocation checking for Remote Server Auth -SSLProxyCARevocationFile file-pathsvEFile of concatenated PEM-encoded CA CRLs for +SSLProxyCARevocationCheck chain|leaf|none none svEEnable CRL-based revocation checking for Remote Server Auth +SSLProxyCARevocationFile file-pathsvEFile of concatenated PEM-encoded CA CRLs for Remote Server Auth -SSLProxyCARevocationPath directory-pathsvEDirectory of PEM-encoded CA CRLs for +SSLProxyCARevocationPath directory-pathsvEDirectory of PEM-encoded CA CRLs for Remote Server Auth -SSLProxyCheckPeerCN on|off on svEWhether to check the remote server certificate's CN field +SSLProxyCheckPeerCN on|off on svEWhether to check the remote server certificate's CN field -SSLProxyCheckPeerExpire on|off on svEWhether to check if remote server certificate is expired +SSLProxyCheckPeerExpire on|off on svEWhether to check if remote server certificate is expired -SSLProxyCheckPeerName on|off on svEConfigure host name checking for remote server certificates +SSLProxyCheckPeerName on|off on svEConfigure host name checking for remote server certificates -SSLProxyCipherSuite cipher-spec ALL:!ADH:RC4+RSA:+H +svdhECipher Suite available for negotiation in SSL +SSLProxyCipherSuite cipher-spec ALL:!ADH:RC4+RSA:+H +svdhECipher Suite available for negotiation in SSL proxy handshake -SSLProxyEngine on|off off svESSL Proxy Engine Operation Switch -SSLProxyMachineCertificateChainFile filenamesEFile of concatenated PEM-encoded CA certificates to be used by the proxy for choosing a certificate -SSLProxyMachineCertificateFile filenamesEFile of concatenated PEM-encoded client certificates and keys to be used by the proxy -SSLProxyMachineCertificatePath directorysEDirectory of PEM-encoded client certificates and keys to be used by the proxy -SSLProxyProtocol [+|-]protocol ... all -SSLv3 (up to 2 +svEConfigure usable SSL protocol flavors for proxy usage -SSLProxyVerify level none svEType of remote server Certificate verification -SSLProxyVerifyDepth number 1 svEMaximum depth of CA Certificates in Remote Server +SSLProxyEngine on|off off svESSL Proxy Engine Operation Switch +SSLProxyMachineCertificateChainFile filenamesEFile of concatenated PEM-encoded CA certificates to be used by the proxy for choosing a certificate +SSLProxyMachineCertificateFile filenamesEFile of concatenated PEM-encoded client certificates and keys to be used by the proxy +SSLProxyMachineCertificatePath directorysEDirectory of PEM-encoded client certificates and keys to be used by the proxy +SSLProxyProtocol [+|-]protocol ... all -SSLv3 (up to 2 +svEConfigure usable SSL protocol flavors for proxy usage +SSLProxyVerify level none svEType of remote server Certificate verification +SSLProxyVerifyDepth number 1 svEMaximum depth of CA Certificates in Remote Server Certificate verification -SSLRandomSeed context source -[bytes]sEPseudo Random Number Generator (PRNG) seeding +SSLRandomSeed context source +[bytes]sEPseudo Random Number Generator (PRNG) seeding source -SSLRenegBufferSize bytes 131072 dhESet the size for the SSL renegotiation buffer -SSLRequire expressiondhEAllow access only when an arbitrarily complex +SSLRenegBufferSize bytes 131072 dhESet the size for the SSL renegotiation buffer +SSLRequire expressiondhEAllow access only when an arbitrarily complex boolean expression is true -SSLRequireSSLdhEDeny access when SSL is not used for the +SSLRequireSSLdhEDeny access when SSL is not used for the HTTP request -SSLSessionCache type none sEType of the global/inter-process SSL Session +SSLSessionCache type none sEType of the global/inter-process SSL Session Cache -SSLSessionCacheTimeout seconds 300 svENumber of seconds before an SSL session expires +SSLSessionCacheTimeout seconds 300 svENumber of seconds before an SSL session expires in the Session Cache -SSLSessionTicketKeyFile file-pathsvEPersistent encryption/decryption key for TLS session tickets -SSLSessionTickets on|off on svEEnable or disable use of TLS session tickets -SSLSRPUnknownUserSeed secret-stringsvESRP unknown user seed -SSLSRPVerifierFile file-pathsvEPath to SRP verifier file -SSLStaplingCache typesEConfigures the OCSP stapling cache -SSLStaplingErrorCacheTimeout seconds 600 svENumber of seconds before expiring invalid responses in the OCSP stapling cache -SSLStaplingFakeTryLater on|off on svESynthesize "tryLater" responses for failed OCSP stapling queries -SSLStaplingForceURL urisvEOverride the OCSP responder URI specified in the certificate's AIA extension -SSLStaplingResponderTimeout seconds 10 svETimeout for OCSP stapling queries -SSLStaplingResponseMaxAge seconds -1 svEMaximum allowable age for OCSP stapling responses -SSLStaplingResponseTimeSkew seconds 300 svEMaximum allowable time skew for OCSP stapling response validation -SSLStaplingReturnResponderErrors on|off on svEPass stapling related OCSP errors on to client -SSLStaplingStandardCacheTimeout seconds 3600 svENumber of seconds before expiring responses in the OCSP stapling cache -SSLStrictSNIVHostCheck on|off off svEWhether to allow non-SNI clients to access a name-based virtual +SSLSessionTicketKeyFile file-pathsvEPersistent encryption/decryption key for TLS session tickets +SSLSessionTickets on|off on svEEnable or disable use of TLS session tickets +SSLSRPUnknownUserSeed secret-stringsvESRP unknown user seed +SSLSRPVerifierFile file-pathsvEPath to SRP verifier file +SSLStaplingCache typesEConfigures the OCSP stapling cache +SSLStaplingErrorCacheTimeout seconds 600 svENumber of seconds before expiring invalid responses in the OCSP stapling cache +SSLStaplingFakeTryLater on|off on svESynthesize "tryLater" responses for failed OCSP stapling queries +SSLStaplingForceURL urisvEOverride the OCSP responder URI specified in the certificate's AIA extension +SSLStaplingResponderTimeout seconds 10 svETimeout for OCSP stapling queries +SSLStaplingResponseMaxAge seconds -1 svEMaximum allowable age for OCSP stapling responses +SSLStaplingResponseTimeSkew seconds 300 svEMaximum allowable time skew for OCSP stapling response validation +SSLStaplingReturnResponderErrors on|off on svEPass stapling related OCSP errors on to client +SSLStaplingStandardCacheTimeout seconds 3600 svENumber of seconds before expiring responses in the OCSP stapling cache +SSLStrictSNIVHostCheck on|off off svEWhether to allow non-SNI clients to access a name-based virtual host. -SSLUserName varnamesdhEVariable name to determine user name -SSLUseStapling on|off off svEEnable stapling of OCSP responses in the TLS handshake -SSLVerifyClient level none svdhEType of Client Certificate verification -SSLVerifyDepth number 1 svdhEMaximum depth of CA Certificates in Client +SSLUserName varnamesdhEVariable name to determine user name +SSLUseStapling on|off off svEEnable stapling of OCSP responses in the TLS handshake +SSLVerifyClient level none svdhEType of Client Certificate verification +SSLVerifyDepth number 1 svdhEMaximum depth of CA Certificates in Client Certificate verification -StartServers numbersMNumber of child server processes created at startup -StartThreads numbersMNumber of threads created on startup -Substitute s/pattern/substitution/[infq]dhEPattern to filter the response content -SubstituteInheritBefore on|off off dhEChange the merge order of inherited patterns -SubstituteMaxLineLength bytes(b|B|k|K|m|M|g|G) 1m dhESet the maximum line size -Suexec On|OffsBEnable or disable the suEXEC feature -SuexecUserGroup User GroupsvEUser and group for CGI programs to run as -ThreadLimit numbersMSets the upper limit on the configurable number of threads +StartServers numbersMNumber of child server processes created at startup +StartThreads numbersMNumber of threads created on startup +Substitute s/pattern/substitution/[infq]dhEPattern to filter the response content +SubstituteInheritBefore on|off off dhEChange the merge order of inherited patterns +SubstituteMaxLineLength bytes(b|B|k|K|m|M|g|G) 1m dhESet the maximum line size +Suexec On|OffsBEnable or disable the suEXEC feature +SuexecUserGroup User GroupsvEUser and group for CGI programs to run as +ThreadLimit numbersMSets the upper limit on the configurable number of threads per child process -ThreadsPerChild numbersMNumber of threads created by each child process -ThreadStackSize sizesMThe size in bytes of the stack used by threads handling +ThreadsPerChild numbersMNumber of threads created by each child process +ThreadStackSize sizesMThe size in bytes of the stack used by threads handling client connections -TimeOut seconds 60 svCAmount of time the server will wait for +TimeOut seconds 60 svCAmount of time the server will wait for certain events before failing a request -TraceEnable [on|off|extended] on svCDetermines the behavior on TRACE requests -TransferLog file|pipesvBSpecify location of a log file -TypesConfig file-path conf/mime.types sBThe location of the mime.types file -UnDefine parameter-namesCUndefine the existence of a variable -UndefMacro namesvdBUndefine a macro -UnsetEnv env-variable [env-variable] -...svdhBRemoves variables from the environment -Use name [value1 ... valueN] -svdBUse a macro -UseCanonicalName On|Off|DNS Off svdCConfigures how the server determines its own name and +TraceEnable [on|off|extended] on svCDetermines the behavior on TRACE requests +TransferLog file|pipesvBSpecify location of a log file +TypesConfig file-path conf/mime.types sBThe location of the mime.types file +UnDefine parameter-namesCUndefine the existence of a variable +UndefMacro namesvdBUndefine a macro +UnsetEnv env-variable [env-variable] +...svdhBRemoves variables from the environment +Use name [value1 ... valueN] +svdBUse a macro +UseCanonicalName On|Off|DNS Off svdCConfigures how the server determines its own name and port -UseCanonicalPhysicalPort On|Off Off svdCConfigures how the server determines its own port -User unix-userid #-1 sBThe userid under which the server will answer +UseCanonicalPhysicalPort On|Off Off svdCConfigures how the server determines its own port +User unix-userid #-1 sBThe userid under which the server will answer requests -UserDir directory-filename [directory-filename] ... -svBLocation of the user-specific directories -VHostCGIMode On|Off|Secure On vXDetermines whether the virtualhost can run +UserDir directory-filename [directory-filename] ... +svBLocation of the user-specific directories +VHostCGIMode On|Off|Secure On vXDetermines whether the virtualhost can run subprocesses, and the privileges available to subprocesses. -VHostPrivs [+-]?privilege-name [[+-]?privilege-name] ...vXAssign arbitrary privileges to subprocesses created +VHostPrivs [+-]?privilege-name [[+-]?privilege-name] ...vXAssign arbitrary privileges to subprocesses created by a virtual host. -VHostGroup unix-groupidvXSets the Group ID under which a virtual host runs. -VHostPrivs [+-]?privilege-name [[+-]?privilege-name] ...vXAssign arbitrary privileges to a virtual host. -VHostSecure On|Off On vXDetermines whether the server runs with enhanced security +VHostGroup unix-groupidvXSets the Group ID under which a virtual host runs. +VHostPrivs [+-]?privilege-name [[+-]?privilege-name] ...vXAssign arbitrary privileges to a virtual host. +VHostSecure On|Off On vXDetermines whether the server runs with enhanced security for the virtualhost. -VHostUser unix-useridvXSets the User ID under which a virtual host runs. -VirtualDocumentRoot interpolated-directory|none none svEDynamically configure the location of the document root +VHostUser unix-useridvXSets the User ID under which a virtual host runs. +VirtualDocumentRoot interpolated-directory|none none svEDynamically configure the location of the document root for a given virtual host -VirtualDocumentRootIP interpolated-directory|none none svEDynamically configure the location of the document root +VirtualDocumentRootIP interpolated-directory|none none svEDynamically configure the location of the document root for a given virtual host -<VirtualHost +<VirtualHost addr[:port] [addr[:port]] - ...> ... </VirtualHost>sCContains directives that apply only to a specific + ...> ... </VirtualHost>sCContains directives that apply only to a specific hostname or IP address -VirtualScriptAlias interpolated-directory|none none svEDynamically configure the location of the CGI directory for +VirtualScriptAlias interpolated-directory|none none svEDynamically configure the location of the CGI directory for a given virtual host -VirtualScriptAliasIP interpolated-directory|none none svEDynamically configure the location of the CGI directory for +VirtualScriptAliasIP interpolated-directory|none none svEDynamically configure the location of the CGI directory for a given virtual host -WatchdogInterval number-of-seconds 1 sBWatchdog interval in seconds -XBitHack on|off|full off svdhBParse SSI directives in files with the execute bit +WatchdogInterval number-of-seconds 1 sBWatchdog interval in seconds +XBitHack on|off|full off svdhBParse SSI directives in files with the execute bit set -xml2EncAlias charset alias [alias ...]sBRecognise Aliases for encoding values -xml2EncDefault namesvdhBSets a default encoding to assume when absolutely no information +xml2EncAlias charset alias [alias ...]sBRecognise Aliases for encoding values +xml2EncDefault namesvdhBSets a default encoding to assume when absolutely no information can be automatically detected -xml2StartParse element [element ...]svdhBAdvise the parser to skip leading junk. +xml2StartParse element [element ...]svdhBAdvise the parser to skip leading junk.

    Available Languages:  de  | diff --git a/docs/manual/mod/quickreference.html.es b/docs/manual/mod/quickreference.html.es index 53ef657358..a2a8df54de 100644 --- a/docs/manual/mod/quickreference.html.es +++ b/docs/manual/mod/quickreference.html.es @@ -477,14 +477,16 @@ will exit. requests H2CopyFiles on|off off svdhEDetermine file handling in responses H2Direct on|off on for h2c, off for +svEH2 Direct Protocol Switch -H2MaxSessionStreams n 100 svEMaximum number of active streams per HTTP/2 session. -H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. -H2MaxWorkers nsEMaximum number of worker threads to use per child process. -H2MinWorkers nsEMinimal number of worker threads to use per child process. -H2ModernTLSOnly on|off on svERequire HTTP/2 connections to be "modern TLS" only -H2Push on|off on svEH2 Server Push Switch -H2PushDiarySize n 256 svEH2 Server Push Diary Size -H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 svEH2 Server Push Priority +H2EarlyHints on|off off svEDetermine sending of 103 status codes +H2MaxSessionStreams n 100 svEMaximum number of active streams per HTTP/2 session. +H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. +H2MaxWorkers nsEMaximum number of worker threads to use per child process. +H2MinWorkers nsEMinimal number of worker threads to use per child process. +H2ModernTLSOnly on|off on svERequire HTTP/2 connections to be "modern TLS" only +H2Push on|off on svEH2 Server Push Switch +H2PushDiarySize n 256 svEH2 Server Push Diary Size +H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 svEH2 Server Push Priority +H2PushResource [add] path [critical]svdhEDeclares resources for early pushing to the client H2SerializeHeaders on|off off svESerialize Request/Response Processing Switch H2SessionExtraFiles nsvENumber of Extra File Handles H2StreamMaxMemSize bytes 65536 svEMaximum amount of output data buffered per stream. diff --git a/docs/manual/mod/quickreference.html.ja.utf8 b/docs/manual/mod/quickreference.html.ja.utf8 index 686698ba97..469022d100 100644 --- a/docs/manual/mod/quickreference.html.ja.utf8 +++ b/docs/manual/mod/quickreference.html.ja.utf8 @@ -450,14 +450,16 @@ expr=expression]sB H2CopyFiles on|off off svdhEDetermine file handling in responses H2Direct on|off on for h2c, off for +svEH2 Direct Protocol Switch -H2MaxSessionStreams n 100 svEMaximum number of active streams per HTTP/2 session. -H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. -H2MaxWorkers nsEMaximum number of worker threads to use per child process. -H2MinWorkers nsEMinimal number of worker threads to use per child process. -H2ModernTLSOnly on|off on svERequire HTTP/2 connections to be "modern TLS" only -H2Push on|off on svEH2 Server Push Switch -H2PushDiarySize n 256 svEH2 Server Push Diary Size -H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 svEH2 Server Push Priority +H2EarlyHints on|off off svEDetermine sending of 103 status codes +H2MaxSessionStreams n 100 svEMaximum number of active streams per HTTP/2 session. +H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. +H2MaxWorkers nsEMaximum number of worker threads to use per child process. +H2MinWorkers nsEMinimal number of worker threads to use per child process. +H2ModernTLSOnly on|off on svERequire HTTP/2 connections to be "modern TLS" only +H2Push on|off on svEH2 Server Push Switch +H2PushDiarySize n 256 svEH2 Server Push Diary Size +H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 svEH2 Server Push Priority +H2PushResource [add] path [critical]svdhEDeclares resources for early pushing to the client H2SerializeHeaders on|off off svESerialize Request/Response Processing Switch H2SessionExtraFiles nsvENumber of Extra File Handles H2StreamMaxMemSize bytes 65536 svEMaximum amount of output data buffered per stream. diff --git a/docs/manual/mod/quickreference.html.ko.euc-kr b/docs/manual/mod/quickreference.html.ko.euc-kr index d797115dc4..b6d4c036b1 100644 --- a/docs/manual/mod/quickreference.html.ko.euc-kr +++ b/docs/manual/mod/quickreference.html.ko.euc-kr @@ -450,14 +450,16 @@ will exit. requests H2CopyFiles on|off off svdhEDetermine file handling in responses H2Direct on|off on for h2c, off for +svEH2 Direct Protocol Switch -H2MaxSessionStreams n 100 svEMaximum number of active streams per HTTP/2 session. -H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. -H2MaxWorkers nsEMaximum number of worker threads to use per child process. -H2MinWorkers nsEMinimal number of worker threads to use per child process. -H2ModernTLSOnly on|off on svERequire HTTP/2 connections to be "modern TLS" only -H2Push on|off on svEH2 Server Push Switch -H2PushDiarySize n 256 svEH2 Server Push Diary Size -H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 svEH2 Server Push Priority +H2EarlyHints on|off off svEDetermine sending of 103 status codes +H2MaxSessionStreams n 100 svEMaximum number of active streams per HTTP/2 session. +H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. +H2MaxWorkers nsEMaximum number of worker threads to use per child process. +H2MinWorkers nsEMinimal number of worker threads to use per child process. +H2ModernTLSOnly on|off on svERequire HTTP/2 connections to be "modern TLS" only +H2Push on|off on svEH2 Server Push Switch +H2PushDiarySize n 256 svEH2 Server Push Diary Size +H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 svEH2 Server Push Priority +H2PushResource [add] path [critical]svdhEDeclares resources for early pushing to the client H2SerializeHeaders on|off off svESerialize Request/Response Processing Switch H2SessionExtraFiles nsvENumber of Extra File Handles H2StreamMaxMemSize bytes 65536 svEMaximum amount of output data buffered per stream. diff --git a/docs/manual/mod/quickreference.html.tr.utf8 b/docs/manual/mod/quickreference.html.tr.utf8 index b7e127b5a1..7c3e5747a8 100644 --- a/docs/manual/mod/quickreference.html.tr.utf8 +++ b/docs/manual/mod/quickreference.html.tr.utf8 @@ -472,14 +472,16 @@ expr=ifade]sTGroup unix-grubu #-1 sTİsteklere yanıt verecek sunucunun ait olacağı grubu belirler. H2CopyFiles on|off off skdhEDetermine file handling in responses H2Direct on|off on for h2c, off for +skEH2 Direct Protocol Switch -H2MaxSessionStreams n 100 skEMaximum number of active streams per HTTP/2 session. -H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. -H2MaxWorkers nsEMaximum number of worker threads to use per child process. -H2MinWorkers nsEMinimal number of worker threads to use per child process. -H2ModernTLSOnly on|off on skERequire HTTP/2 connections to be "modern TLS" only -H2Push on|off on skEH2 Server Push Switch -H2PushDiarySize n 256 skEH2 Server Push Diary Size -H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 skEH2 Server Push Priority +H2EarlyHints on|off off skEDetermine sending of 103 status codes +H2MaxSessionStreams n 100 skEMaximum number of active streams per HTTP/2 session. +H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. +H2MaxWorkers nsEMaximum number of worker threads to use per child process. +H2MinWorkers nsEMinimal number of worker threads to use per child process. +H2ModernTLSOnly on|off on skERequire HTTP/2 connections to be "modern TLS" only +H2Push on|off on skEH2 Server Push Switch +H2PushDiarySize n 256 skEH2 Server Push Diary Size +H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 skEH2 Server Push Priority +H2PushResource [add] path [critical]skdhEDeclares resources for early pushing to the client H2SerializeHeaders on|off off skESerialize Request/Response Processing Switch H2SessionExtraFiles nskENumber of Extra File Handles H2StreamMaxMemSize bytes 65536 skEMaximum amount of output data buffered per stream. diff --git a/docs/manual/mod/quickreference.html.zh-cn.utf8 b/docs/manual/mod/quickreference.html.zh-cn.utf8 index 9ffaaa75d0..0d370d7db2 100644 --- a/docs/manual/mod/quickreference.html.zh-cn.utf8 +++ b/docs/manual/mod/quickreference.html.zh-cn.utf8 @@ -469,14 +469,16 @@ will exit. requests H2CopyFiles on|off off svdhEDetermine file handling in responses H2Direct on|off on for h2c, off for +svEH2 Direct Protocol Switch -H2MaxSessionStreams n 100 svEMaximum number of active streams per HTTP/2 session. -H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. -H2MaxWorkers nsEMaximum number of worker threads to use per child process. -H2MinWorkers nsEMinimal number of worker threads to use per child process. -H2ModernTLSOnly on|off on svERequire HTTP/2 connections to be "modern TLS" only -H2Push on|off on svEH2 Server Push Switch -H2PushDiarySize n 256 svEH2 Server Push Diary Size -H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 svEH2 Server Push Priority +H2EarlyHints on|off off svEDetermine sending of 103 status codes +H2MaxSessionStreams n 100 svEMaximum number of active streams per HTTP/2 session. +H2MaxWorkerIdleSeconds n 600 sEMaximum number of seconds h2 workers remain idle until shut down. +H2MaxWorkers nsEMaximum number of worker threads to use per child process. +H2MinWorkers nsEMinimal number of worker threads to use per child process. +H2ModernTLSOnly on|off on svERequire HTTP/2 connections to be "modern TLS" only +H2Push on|off on svEH2 Server Push Switch +H2PushDiarySize n 256 svEH2 Server Push Diary Size +H2PushPriority mime-type [after|before|interleaved] [weight] * After 16 svEH2 Server Push Priority +H2PushResource [add] path [critical]svdhEDeclares resources for early pushing to the client H2SerializeHeaders on|off off svESerialize Request/Response Processing Switch H2SessionExtraFiles nsvENumber of Extra File Handles H2StreamMaxMemSize bytes 65536 svEMaximum amount of output data buffered per stream. diff --git a/docs/manual/ssl/ssl_faq.html.fr b/docs/manual/ssl/ssl_faq.html.fr index b11c16e7e9..70676d318e 100644 --- a/docs/manual/ssl/ssl_faq.html.fr +++ b/docs/manual/ssl/ssl_faq.html.fr @@ -786,22 +786,22 @@ dans votre section d'h

    Comment activer TLS-SRP ?

    -

    Le protocole TLS-SRP (Echange de clés sécurisé par mot de passe - pour TLS comme spécifié dans la RFC 5054) peut compléter ou même +

    Le protocole TLS-SRP (Echange de cls scuris par mot de passe + pour TLS comme spcifi dans la RFC 5054) peut complter ou mme remplacer les certificats lors du processus d'authentification des - connexions SSL. Pour utiliser TLS-SRP, spécifiez un fichier de - vérification SRP OpenSSL via la directive SSLSRPVerifierFile. Vous pouvez créer - le fichier de vérification via l'utilitaire openssl :

    + connexions SSL. Pour utiliser TLS-SRP, spcifiez un fichier de + vrification SRP OpenSSL via la directive SSLSRPVerifierFile. Vous pouvez crer + le fichier de vrification via l'utilitaire openssl :

    openssl srp -srpvfile passwd.srpv -add username

    -

    Une fois ce fichier créé, vous devez le référencer dans la +

    Une fois ce fichier cr, vous devez le rfrencer dans la configuration du serveur SSL :

    SSLSRPVerifierFile /path/to/passwd.srpv

    -

    Pour forcer les clients   utiliser des algorithmes de chiffrement - basés sur TLS-SRP et s'affranchissant des certificats, utilisez la +

    Pour forcer les clients utiliser des algorithmes de chiffrement + bass sur TLS-SRP et s'affranchissant des certificats, utilisez la directive suivante :

    SSLCipherSuite "!DSS:!aRSA:SRP" @@ -841,9 +841,9 @@ MIGHAoGBAP//////////yQ/aoiFowjTExmKLgNwc0SkCTgiKZ8x0Agu+pjsTmyJR Sgh5jjQE3e+VGbPNOkMbMCsKbfJfFDdP4TVtbVHCReSFtXZiXn7G9ExC6aY37WsL /1y29Aa37e44a/taiZ+lrp8kEXxLH+ZJKGZR7OZTgf//////////AgEC -----END DH PARAMETERS-----

    -

    Ajoute les paramètres personnalisés incluant les lignes "BEGIN DH - PARAMETERS" et "END DH PARAMETERS"   la fin du premier fichier de - certificat défini via la directive SSLCertificateFile.

    +

    Ajoute les paramtres personnaliss incluant les lignes "BEGIN DH + PARAMETERS" et "END DH PARAMETERS" la fin du premier fichier de + certificat dfini via la directive SSLCertificateFile.

    top
    diff --git a/docs/manual/ssl/ssl_howto.html.fr b/docs/manual/ssl/ssl_howto.html.fr index 5799e39d3a..863efe774b 100644 --- a/docs/manual/ssl/ssl_howto.html.fr +++ b/docs/manual/ssl/ssl_howto.html.fr @@ -161,11 +161,11 @@ installations de httpd /etc/apache2/mods-enabled/ssl.conf pour Ubuntu ou Debian, etc...

    -

    Le chemin spécifié par la directive +

    Le chemin spcifi par la directive SSLStaplingCache (par exemple logs/) -doit être le même que celui spécifié par la directive +doit tre le mme que celui spcifi par la directive SSLSessionCache. Ce chemin est relatif au chemin -spécifié par la directive ServerRoot.

    +spcifi par la directive ServerRoot.

    Cette directive SSLStaplingCache particulire ncessite le chargement du module mod_socache_shmcb ( -- GitLab From b3cf6ce43e23c5968f3fb84de7aeb9303cdc050c Mon Sep 17 00:00:00 2001 From: Gregg Lewis Smith Date: Wed, 30 Nov 2016 22:40:15 +0000 Subject: [PATCH 017/224] Add mod_proxy_hcheck to Windows git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1772126 13f79535-47bb-0310-9956-ffa450edef68 --- Apache-apr2.dsw | 25 ++ Apache.dsw | 27 ++ CMakeLists.txt | 2 + Makefile.win | 2 + build/installwinconf.awk | 1 + modules/proxy/mod_proxy_hcheck.dep | 5 + modules/proxy/mod_proxy_hcheck.dsp | 123 ++++++++++ modules/proxy/mod_proxy_hcheck.mak | 380 +++++++++++++++++++++++++++++ os/win32/BaseAddr.ref | 1 + 9 files changed, 566 insertions(+) create mode 100644 modules/proxy/mod_proxy_hcheck.dep create mode 100644 modules/proxy/mod_proxy_hcheck.dsp create mode 100644 modules/proxy/mod_proxy_hcheck.mak diff --git a/Apache-apr2.dsw b/Apache-apr2.dsw index 2b65979300..1f4509ebcc 100644 --- a/Apache-apr2.dsw +++ b/Apache-apr2.dsw @@ -282,6 +282,9 @@ Package=<4> Project_Dep_Name mod_proxy_ftp End Project Dependency Begin Project Dependency + Project_Dep_Name mod_proxy_hcheck + End Project Dependency + Begin Project Dependency Project_Dep_Name mod_proxy_http End Project Dependency Begin Project Dependency @@ -2309,6 +2312,28 @@ Package=<4> ############################################################################### +Project: "mod_proxy_hcheck"=.\modules\proxy\mod_proxy_hcheck.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libapr + End Project Dependency + Begin Project Dependency + Project_Dep_Name libhttpd + End Project Dependency + Begin Project Dependency + Project_Dep_Name mod_proxy + End Project Dependency +}}} + +############################################################################### +############################################################################### + Project: "mod_proxy_html"=.\modules\filters\mod_proxy_html.dsp - Package Owner=<4> Package=<5> diff --git a/Apache.dsw b/Apache.dsw index 20259d25b6..af13918322 100644 --- a/Apache.dsw +++ b/Apache.dsw @@ -297,6 +297,9 @@ Package=<4> Project_Dep_Name mod_proxy_ftp End Project Dependency Begin Project Dependency + Project_Dep_Name mod_proxy_hcheck + End Project Dependency + Begin Project Dependency Project_Dep_Name mod_proxy_http End Project Dependency Begin Project Dependency @@ -2714,6 +2717,30 @@ Package=<4> ############################################################################### +Project: "mod_proxy_hcheck"=.\modules\proxy\mod_proxy_hcheck.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libapr + End Project Dependency + Begin Project Dependency + Project_Dep_Name libaprutil + End Project Dependency + Begin Project Dependency + Project_Dep_Name libhttpd + End Project Dependency + Begin Project Dependency + Project_Dep_Name mod_proxy + End Project Dependency +}}} + +############################################################################### + Project: "mod_proxy_html"=.\modules\filters\mod_proxy_html.dsp - Package Owner=<4> Package=<5> diff --git a/CMakeLists.txt b/CMakeLists.txt index 7646903ae3..c2324a341a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -318,6 +318,7 @@ SET(MODULE_LIST "modules/proxy/mod_proxy_fcgi+I+Apache proxy FastCGI module. Requires and is enabled by --enable-proxy." "modules/proxy/mod_proxy_ftp+I+Apache proxy FTP module. Requires and is enabled by --enable-proxy." "modules/proxy/mod_proxy_http+I+Apache proxy HTTP module. Requires and is enabled by --enable-proxy." + "modules/proxy/mod_proxy_hcheck+I+Apache proxy health check module. Requires and is enabled by --enable-proxy." "modules/proxy/mod_proxy_scgi+I+Apache proxy SCGI module. Requires and is enabled by --enable-proxy." "modules/proxy/mod_proxy_wstunnel+I+Apache proxy Websocket Tunnel module. Requires and is enabled by --enable-proxy." "modules/http2/mod_proxy_http2+i+Apache proxy HTTP/2 module. Requires --enable-proxy." @@ -424,6 +425,7 @@ SET(mod_proxy_connect_extra_libs mod_proxy) SET(mod_proxy_express_extra_libs mod_proxy) SET(mod_proxy_fcgi_extra_libs mod_proxy) SET(mod_proxy_ftp_extra_libs mod_proxy) +SET(mod_proxy_hcheck_extra_libs mod_proxy) SET(mod_proxy_http_extra_libs mod_proxy) SET(mod_proxy_html_requires LIBXML2_FOUND) IF(LIBXML2_FOUND) diff --git a/Makefile.win b/Makefile.win index d3cb5c52f7..9bdbb95089 100644 --- a/Makefile.win +++ b/Makefile.win @@ -553,6 +553,7 @@ _build: $(MAKE) $(MAKEOPT) -f mod_proxy_express.mak CFG="mod_proxy_express - Win32 $(LONG)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) -f mod_proxy_fcgi.mak CFG="mod_proxy_fcgi - Win32 $(LONG)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) -f mod_proxy_ftp.mak CFG="mod_proxy_ftp - Win32 $(LONG)" RECURSE=0 $(CTARGET) + $(MAKE) $(MAKEOPT) -f mod_proxy_hcheck.mak CFG="mod_proxy_hcheck - Win32 $(LONG)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) -f mod_proxy_http.mak CFG="mod_proxy_http - Win32 $(LONG)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) -f mod_proxy_scgi.mak CFG="mod_proxy_scgi - Win32 $(LONG)" RECURSE=0 $(CTARGET) $(MAKE) $(MAKEOPT) -f mod_proxy_wstunnel.mak CFG="mod_proxy_wstunnel - Win32 $(LONG)" RECURSE=0 $(CTARGET) @@ -831,6 +832,7 @@ _copybin: copy modules\proxy\$(LONG)\mod_proxy_express.$(src_so) "$(inst_so)" <.y copy modules\proxy\$(LONG)\mod_proxy_fcgi.$(src_so) "$(inst_so)" <.y copy modules\proxy\$(LONG)\mod_proxy_ftp.$(src_so) "$(inst_so)" <.y + copy modules\proxy\$(LONG)\mod_proxy_hcheck.$(src_so) "$(inst_so)" <.y copy modules\proxy\$(LONG)\mod_proxy_http.$(src_so) "$(inst_so)" <.y copy modules\proxy\$(LONG)\mod_proxy_scgi.$(src_so) "$(inst_so)" <.y copy modules\proxy\$(LONG)\mod_proxy_wstunnel.$(src_so) "$(inst_so)" <.y diff --git a/build/installwinconf.awk b/build/installwinconf.awk index 29ab094580..8f8b9b2491 100644 --- a/build/installwinconf.awk +++ b/build/installwinconf.awk @@ -166,6 +166,7 @@ BEGIN { print "#LoadModule proxy_express_module modules/mod_proxy_express.so" > dstfl; print "#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so" > dstfl; print "#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so" > dstfl; + print "#LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so" > dstfl; print "#LoadModule proxy_html_module modules/mod_proxy_html.so" > dstfl; print "#LoadModule proxy_http_module modules/mod_proxy_http.so" > dstfl; print "#LoadModule proxy_http2_module modules/mod_proxy_http2.so" > dstfl; diff --git a/modules/proxy/mod_proxy_hcheck.dep b/modules/proxy/mod_proxy_hcheck.dep new file mode 100644 index 0000000000..008ee64bb2 --- /dev/null +++ b/modules/proxy/mod_proxy_hcheck.dep @@ -0,0 +1,5 @@ +# Microsoft Developer Studio Generated Dependency File, included by mod_proxy_hcheck.mak + +..\..\build\win32\httpd.rc : \ + "..\..\include\ap_release.h"\ + diff --git a/modules/proxy/mod_proxy_hcheck.dsp b/modules/proxy/mod_proxy_hcheck.dsp new file mode 100644 index 0000000000..73aaf2b723 --- /dev/null +++ b/modules/proxy/mod_proxy_hcheck.dsp @@ -0,0 +1,123 @@ +# Microsoft Developer Studio Project File - Name="mod_proxy_hcheck" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=mod_proxy_hcheck - Win32 Release +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "mod_proxy_hcheck.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "mod_proxy_hcheck.mak" CFG="mod_proxy_hcheck - Win32 Release" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "mod_proxy_hcheck - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "mod_proxy_hcheck - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "mod_proxy_hcheck - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c +# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "../core" /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Release\mod_proxy_hcheck_src" /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x809 /d "NDEBUG" +# ADD RSC /l 0x409 /fo"Release/mod_proxy_hcheck.res" /i "../../include" /i "../../srclib/apr/include" /d "NDEBUG" /d BIN_NAME="mod_proxy_hcheck.so" /d LONG_NAME="proxy_hcheck_module for Apache" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /out:".\Release\mod_proxy_hcheck.so" /base:@..\..\os\win32\BaseAddr.ref,mod_proxy_hcheck.so +# ADD LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Release\mod_proxy_hcheck.so" /base:@..\..\os\win32\BaseAddr.ref,mod_proxy_hcheck.so /opt:ref +# Begin Special Build Tool +TargetPath=.\Release\mod_proxy_hcheck.so +SOURCE="$(InputPath)" +PostBuild_Desc=Embed .manifest +PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2 +# End Special Build Tool + +!ELSEIF "$(CFG)" == "mod_proxy_hcheck - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c +# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "../core" /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Debug\mod_proxy_hcheck_src" /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x809 /d "_DEBUG" +# ADD RSC /l 0x409 /fo"Debug/mod_proxy_hcheck.res" /i "../../include" /i "../../srclib/apr/include" /d "_DEBUG" /d BIN_NAME="mod_proxy_hcheck.so" /d LONG_NAME="proxy_hcheck_module for Apache" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Debug\mod_proxy_hcheck.so" /base:@..\..\os\win32\BaseAddr.ref,mod_proxy_hcheck.so +# ADD LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Debug\mod_proxy_hcheck.so" /base:@..\..\os\win32\BaseAddr.ref,mod_proxy_hcheck.so +# Begin Special Build Tool +TargetPath=.\Debug\mod_proxy_hcheck.so +SOURCE="$(InputPath)" +PostBuild_Desc=Embed .manifest +PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2 +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "mod_proxy_hcheck - Win32 Release" +# Name "mod_proxy_hcheck - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90" +# Begin Source File + +SOURCE=.\mod_proxy_hcheck.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter ".h" +# Begin Source File + +SOURCE=.\mod_proxy.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\build\win32\httpd.rc +# End Source File +# End Target +# End Project diff --git a/modules/proxy/mod_proxy_hcheck.mak b/modules/proxy/mod_proxy_hcheck.mak new file mode 100644 index 0000000000..dc0d7589af --- /dev/null +++ b/modules/proxy/mod_proxy_hcheck.mak @@ -0,0 +1,380 @@ +# Microsoft Developer Studio Generated NMAKE File, Based on mod_proxy_hcheck.dsp +!IF "$(CFG)" == "" +CFG=mod_proxy_hcheck - Win32 Release +!MESSAGE No configuration specified. Defaulting to mod_proxy_hcheck - Win32 Release. +!ENDIF + +!IF "$(CFG)" != "mod_proxy_hcheck - Win32 Release" && "$(CFG)" != "mod_proxy_hcheck - Win32 Debug" +!MESSAGE Invalid configuration "$(CFG)" specified. +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "mod_proxy_hcheck.mak" CFG="mod_proxy_hcheck - Win32 Release" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "mod_proxy_hcheck - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "mod_proxy_hcheck - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE +!ERROR An invalid configuration is specified. +!ENDIF + +!IF "$(OS)" == "Windows_NT" +NULL= +!ELSE +NULL=nul +!ENDIF + +!IF "$(CFG)" == "mod_proxy_hcheck - Win32 Release" + +OUTDIR=.\Release +INTDIR=.\Release +DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep +# Begin Custom Macros +OutDir=.\Release +# End Custom Macros + +!IF "$(RECURSE)" == "0" + +ALL : "$(OUTDIR)\mod_proxy_hcheck.so" "$(DS_POSTBUILD_DEP)" + +!ELSE + +ALL : "mod_proxy - Win32 Release" "libhttpd - Win32 Release" "libaprutil - Win32 Release" "libapr - Win32 Release" "$(OUTDIR)\mod_proxy_hcheck.so" "$(DS_POSTBUILD_DEP)" + +!ENDIF + +!IF "$(RECURSE)" == "1" +CLEAN :"libapr - Win32 ReleaseCLEAN" "libaprutil - Win32 ReleaseCLEAN" "libhttpd - Win32 ReleaseCLEAN" "mod_proxy - Win32 ReleaseCLEAN" +!ELSE +CLEAN : +!ENDIF + -@erase "$(INTDIR)\mod_proxy_hcheck.obj" + -@erase "$(INTDIR)\mod_proxy_hcheck.res" + -@erase "$(INTDIR)\mod_proxy_hcheck_src.idb" + -@erase "$(INTDIR)\mod_proxy_hcheck_src.pdb" + -@erase "$(OUTDIR)\mod_proxy_hcheck.exp" + -@erase "$(OUTDIR)\mod_proxy_hcheck.lib" + -@erase "$(OUTDIR)\mod_proxy_hcheck.pdb" + -@erase "$(OUTDIR)\mod_proxy_hcheck.so" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../core" /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\mod_proxy_hcheck_src" /FD /c + +.c{$(INTDIR)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +.cpp{$(INTDIR)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +.cxx{$(INTDIR)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +.c{$(INTDIR)}.sbr:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +.cpp{$(INTDIR)}.sbr:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +.cxx{$(INTDIR)}.sbr:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +MTL=midl.exe +MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 +RSC=rc.exe +RSC_PROJ=/l 0x409 /fo"$(INTDIR)\mod_proxy_hcheck.res" /i "../../include" /i "../../srclib/apr/include" /d "NDEBUG" /d BIN_NAME="mod_proxy_hcheck.so" /d LONG_NAME="proxy_hcheck_module for Apache" +BSC32=bscmake.exe +BSC32_FLAGS=/nologo /o"$(OUTDIR)\mod_proxy_hcheck.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +LINK32_FLAGS=kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\mod_proxy_hcheck.pdb" /debug /out:"$(OUTDIR)\mod_proxy_hcheck.so" /implib:"$(OUTDIR)\mod_proxy_hcheck.lib" /base:@..\..\os\win32\BaseAddr.ref,mod_proxy_hcheck.so /opt:ref +LINK32_OBJS= \ + "$(INTDIR)\mod_proxy_hcheck.obj" \ + "$(INTDIR)\mod_proxy_hcheck.res" \ + "..\..\srclib\apr\Release\libapr-1.lib" \ + "..\..\srclib\apr-util\Release\libaprutil-1.lib" \ + "..\..\Release\libhttpd.lib" \ + "$(OUTDIR)\mod_proxy.lib" + +"$(OUTDIR)\mod_proxy_hcheck.so" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +TargetPath=.\Release\mod_proxy_hcheck.so +SOURCE="$(InputPath)" +PostBuild_Desc=Embed .manifest +DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep + +# Begin Custom Macros +OutDir=.\Release +# End Custom Macros + +"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\mod_proxy_hcheck.so" + if exist .\Release\mod_proxy_hcheck.so.manifest mt.exe -manifest .\Release\mod_proxy_hcheck.so.manifest -outputresource:.\Release\mod_proxy_hcheck.so;2 + echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)" + +!ELSEIF "$(CFG)" == "mod_proxy_hcheck - Win32 Debug" + +OUTDIR=.\Debug +INTDIR=.\Debug +DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep +# Begin Custom Macros +OutDir=.\Debug +# End Custom Macros + +!IF "$(RECURSE)" == "0" + +ALL : "$(OUTDIR)\mod_proxy_hcheck.so" "$(DS_POSTBUILD_DEP)" + +!ELSE + +ALL : "mod_proxy - Win32 Debug" "libhttpd - Win32 Debug" "libaprutil - Win32 Debug" "libapr - Win32 Debug" "$(OUTDIR)\mod_proxy_hcheck.so" "$(DS_POSTBUILD_DEP)" + +!ENDIF + +!IF "$(RECURSE)" == "1" +CLEAN :"libapr - Win32 DebugCLEAN" "libaprutil - Win32 DebugCLEAN" "libhttpd - Win32 DebugCLEAN" "mod_proxy - Win32 DebugCLEAN" +!ELSE +CLEAN : +!ENDIF + -@erase "$(INTDIR)\mod_proxy_hcheck.obj" + -@erase "$(INTDIR)\mod_proxy_hcheck.res" + -@erase "$(INTDIR)\mod_proxy_hcheck_src.idb" + -@erase "$(INTDIR)\mod_proxy_hcheck_src.pdb" + -@erase "$(OUTDIR)\mod_proxy_hcheck.exp" + -@erase "$(OUTDIR)\mod_proxy_hcheck.lib" + -@erase "$(OUTDIR)\mod_proxy_hcheck.pdb" + -@erase "$(OUTDIR)\mod_proxy_hcheck.so" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP=cl.exe +CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../core" /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\mod_proxy_hcheck_src" /FD /EHsc /c + +.c{$(INTDIR)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +.cpp{$(INTDIR)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +.cxx{$(INTDIR)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +.c{$(INTDIR)}.sbr:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +.cpp{$(INTDIR)}.sbr:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +.cxx{$(INTDIR)}.sbr:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +MTL=midl.exe +MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 +RSC=rc.exe +RSC_PROJ=/l 0x409 /fo"$(INTDIR)\mod_proxy_hcheck.res" /i "../../include" /i "../../srclib/apr/include" /d "_DEBUG" /d BIN_NAME="mod_proxy_hcheck.so" /d LONG_NAME="proxy_hcheck_module for Apache" +BSC32=bscmake.exe +BSC32_FLAGS=/nologo /o"$(OUTDIR)\mod_proxy_hcheck.bsc" +BSC32_SBRS= \ + +LINK32=link.exe +LINK32_FLAGS=kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\mod_proxy_hcheck.pdb" /debug /out:"$(OUTDIR)\mod_proxy_hcheck.so" /implib:"$(OUTDIR)\mod_proxy_hcheck.lib" /base:@..\..\os\win32\BaseAddr.ref,mod_proxy_hcheck.so +LINK32_OBJS= \ + "$(INTDIR)\mod_proxy_hcheck.obj" \ + "$(INTDIR)\mod_proxy_hcheck.res" \ + "..\..\srclib\apr\Debug\libapr-1.lib" \ + "..\..\srclib\apr-util\Debug\libaprutil-1.lib" \ + "..\..\Debug\libhttpd.lib" \ + "$(OUTDIR)\mod_proxy.lib" + +"$(OUTDIR)\mod_proxy_hcheck.so" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +TargetPath=.\Debug\mod_proxy_hcheck.so +SOURCE="$(InputPath)" +PostBuild_Desc=Embed .manifest +DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep + +# Begin Custom Macros +OutDir=.\Debug +# End Custom Macros + +"$(DS_POSTBUILD_DEP)" : "$(OUTDIR)\mod_proxy_hcheck.so" + if exist .\Debug\mod_proxy_hcheck.so.manifest mt.exe -manifest .\Debug\mod_proxy_hcheck.so.manifest -outputresource:.\Debug\mod_proxy_hcheck.so;2 + echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)" + +!ENDIF + + +!IF "$(NO_EXTERNAL_DEPS)" != "1" +!IF EXISTS("mod_proxy_hcheck.dep") +!INCLUDE "mod_proxy_hcheck.dep" +!ELSE +!MESSAGE Warning: cannot find "mod_proxy_hcheck.dep" +!ENDIF +!ENDIF + + +!IF "$(CFG)" == "mod_proxy_hcheck - Win32 Release" || "$(CFG)" == "mod_proxy_hcheck - Win32 Debug" +SOURCE=.\mod_proxy_hcheck.c + +"$(INTDIR)\mod_proxy_hcheck.obj" : $(SOURCE) "$(INTDIR)" + + +!IF "$(CFG)" == "mod_proxy_hcheck - Win32 Release" + +"libapr - Win32 Release" : + cd ".\..\..\srclib\apr" + $(MAKE) /$(MAKEFLAGS) /F .\libapr.mak CFG="libapr - Win32 Release" + cd "..\..\modules\proxy" + +"libapr - Win32 ReleaseCLEAN" : + cd ".\..\..\srclib\apr" + $(MAKE) /$(MAKEFLAGS) /F .\libapr.mak CFG="libapr - Win32 Release" RECURSE=1 CLEAN + cd "..\..\modules\proxy" + +!ELSEIF "$(CFG)" == "mod_proxy_hcheck - Win32 Debug" + +"libapr - Win32 Debug" : + cd ".\..\..\srclib\apr" + $(MAKE) /$(MAKEFLAGS) /F .\libapr.mak CFG="libapr - Win32 Debug" + cd "..\..\modules\proxy" + +"libapr - Win32 DebugCLEAN" : + cd ".\..\..\srclib\apr" + $(MAKE) /$(MAKEFLAGS) /F .\libapr.mak CFG="libapr - Win32 Debug" RECURSE=1 CLEAN + cd "..\..\modules\proxy" + +!ENDIF + +!IF "$(CFG)" == "mod_proxy_hcheck - Win32 Release" + +"libaprutil - Win32 Release" : + cd ".\..\..\srclib\apr-util" + $(MAKE) /$(MAKEFLAGS) /F ".\libaprutil.mak" CFG="libaprutil - Win32 Release" + cd "..\..\modules\proxy" + +"libaprutil - Win32 ReleaseCLEAN" : + cd ".\..\..\srclib\apr-util" + $(MAKE) /$(MAKEFLAGS) /F ".\libaprutil.mak" CFG="libaprutil - Win32 Release" RECURSE=1 CLEAN + cd "..\..\modules\proxy" + +!ELSEIF "$(CFG)" == "mod_proxy_hcheck - Win32 Debug" + +"libaprutil - Win32 Debug" : + cd ".\..\..\srclib\apr-util" + $(MAKE) /$(MAKEFLAGS) /F ".\libaprutil.mak" CFG="libaprutil - Win32 Debug" + cd "..\..\modules\proxy" + +"libaprutil - Win32 DebugCLEAN" : + cd ".\..\..\srclib\apr-util" + $(MAKE) /$(MAKEFLAGS) /F ".\libaprutil.mak" CFG="libaprutil - Win32 Debug" RECURSE=1 CLEAN + cd "..\..\modules\proxy" + +!ENDIF + +!IF "$(CFG)" == "mod_proxy_hcheck - Win32 Release" + +"libhttpd - Win32 Release" : + cd ".\..\.." + $(MAKE) /$(MAKEFLAGS) /F .\libhttpd.mak CFG="libhttpd - Win32 Release" + cd ".\modules\proxy" + +"libhttpd - Win32 ReleaseCLEAN" : + cd ".\..\.." + $(MAKE) /$(MAKEFLAGS) /F .\libhttpd.mak CFG="libhttpd - Win32 Release" RECURSE=1 CLEAN + cd ".\modules\proxy" + +!ELSEIF "$(CFG)" == "mod_proxy_hcheck - Win32 Debug" + +"libhttpd - Win32 Debug" : + cd ".\..\.." + $(MAKE) /$(MAKEFLAGS) /F .\libhttpd.mak CFG="libhttpd - Win32 Debug" + cd ".\modules\proxy" + +"libhttpd - Win32 DebugCLEAN" : + cd ".\..\.." + $(MAKE) /$(MAKEFLAGS) /F .\libhttpd.mak CFG="libhttpd - Win32 Debug" RECURSE=1 CLEAN + cd ".\modules\proxy" + +!ENDIF + +!IF "$(CFG)" == "mod_proxy_hcheck - Win32 Release" + +"mod_proxy - Win32 Release" : + cd "." + $(MAKE) /$(MAKEFLAGS) /F .\mod_proxy.mak CFG="mod_proxy - Win32 Release" + cd "." + +"mod_proxy - Win32 ReleaseCLEAN" : + cd "." + $(MAKE) /$(MAKEFLAGS) /F .\mod_proxy.mak CFG="mod_proxy - Win32 Release" RECURSE=1 CLEAN + cd "." + +!ELSEIF "$(CFG)" == "mod_proxy_hcheck - Win32 Debug" + +"mod_proxy - Win32 Debug" : + cd "." + $(MAKE) /$(MAKEFLAGS) /F .\mod_proxy.mak CFG="mod_proxy - Win32 Debug" + cd "." + +"mod_proxy - Win32 DebugCLEAN" : + cd "." + $(MAKE) /$(MAKEFLAGS) /F .\mod_proxy.mak CFG="mod_proxy - Win32 Debug" RECURSE=1 CLEAN + cd "." + +!ENDIF + +SOURCE=..\..\build\win32\httpd.rc + +!IF "$(CFG)" == "mod_proxy_hcheck - Win32 Release" + + +"$(INTDIR)\mod_proxy_hcheck.res" : $(SOURCE) "$(INTDIR)" + $(RSC) /l 0x409 /fo"$(INTDIR)\mod_proxy_hcheck.res" /i "../../include" /i "../../srclib/apr/include" /i "\build6\hcheck\build\win32" /d "NDEBUG" /d BIN_NAME="mod_proxy_hcheck.so" /d LONG_NAME="proxy_hcheck_module for Apache" $(SOURCE) + + +!ELSEIF "$(CFG)" == "mod_proxy_hcheck - Win32 Debug" + + +"$(INTDIR)\mod_proxy_hcheck.res" : $(SOURCE) "$(INTDIR)" + $(RSC) /l 0x409 /fo"$(INTDIR)\mod_proxy_hcheck.res" /i "../../include" /i "../../srclib/apr/include" /i "\build6\hcheck\build\win32" /d "_DEBUG" /d BIN_NAME="mod_proxy_hcheck.so" /d LONG_NAME="proxy_hcheck_module for Apache" $(SOURCE) + + +!ENDIF + + +!ENDIF + diff --git a/os/win32/BaseAddr.ref b/os/win32/BaseAddr.ref index 5ca4dce645..7ad338eae6 100644 --- a/os/win32/BaseAddr.ref +++ b/os/win32/BaseAddr.ref @@ -128,3 +128,4 @@ mod_optional_hook_import.so 0x70BE0000 0x00010000 mod_authnz_fcgi.so 0x70BF0000 0x00020000 mod_http2.so 0x70C10000 0x00030000 mod_proxy_http2.so 0x70C40000 0x00020000 +mod_proxy_hcheck.so 0x70C60000 0x00020000 -- GitLab From 48476b62c26ab7d136ab7ae64054059773b8001f Mon Sep 17 00:00:00 2001 From: "William A. Rowe Jr" Date: Thu, 1 Dec 2016 19:04:58 +0000 Subject: [PATCH 018/224] Straightforward votes first git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1772251 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/STATUS b/STATUS index 2d7ee85b9e..dfcf953a10 100644 --- a/STATUS +++ b/STATUS @@ -139,7 +139,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: trunk patch: http://svn.apache.org/r1702948 http://svn.apache.org/r1759415 2.4.x patch: http://home.apache.org/~ylavic/patches/httpd-2.4.x-r1702948_and_co.patch - +1: ylavic, jorton, + +1: ylavic, jorton, wrowe jchampion: r1702948 doesn't quite work as advertised. -Werror is never added to CFLAGS because when combined with -Wstrict-prototypes, the AC_LANG_PROGRAM won't compile (it uses a bare main()). @@ -168,7 +168,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: Rename ap_casecmpstr[n]() to ap_cstr_casecmp[n](), update with APR doxygen http://svn.apache.org/r1747469 2.4.x patch: http://home.apache.org/~jim/patches/httpd-2.4-cache.patch.txt - +1: jim, ylavic + +1: jim, ylavic, wrowe ylavic: r1756553 and r1649491 have a CHANGES entry. *) mod_socache_memcache: Provide memcache STATs to mod_status @@ -183,6 +183,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: svn log --stop-on-copy http://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x-merge-http-strict/ 2.4.x patch: see svn diff -r1767912:HEAD http://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x-merge-http-strict/ + Last updated: 1 Dec with a missing element of http_filters.c +1: wrowe *) ap_reclaim_child_processes(): Implement terminate immediately @@ -190,7 +191,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: https://svn.apache.org/r1757061 https://svn.apache.org/r1770750 2.4.x patch: https://people.apache.org/~sf/PR53555_1_ap_reclaim_child_processes.diff - +1: sf, jim + +1: sf, jim, wrowe *) Improve mod_status view of async connections trunk patches: @@ -199,7 +200,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: https://svn.apache.org/r1756848 https://svn.apache.org/r1757029 2.4.x patch: https://people.apache.org/~sf/PR53555_2_mod_status.diff - +1: sf, jim + +1: sf, jim, wrowe *) mpm_event: Free resources earlier during shutdown trunk patches: @@ -209,7 +210,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: https://svn.apache.org/r1738466 https://svn.apache.org/r1738486 2.4.x patch: https://people.apache.org/~sf/PR53555_3_free_early.diff - +1: sf, jim + +1: sf, jim, wrowe *) mpm_event: Use all free scoreboard slots up to ServerLimit, but don't re-use scoreboard slots of still running, gracefully finishing processes. @@ -224,7 +225,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: https://svn.apache.org/r1770768 2.4.x patch: https://people.apache.org/~sf/PR53555_4_use_all_slots.diff docs: https://svn.apache.org/r1770771 (in addition to the above) - +1: sf, jim + +1: sf, jim, wrowe *) mod_ratelimit: Allow for initial burst of data before we start throttling: PR 60145 -- GitLab From 137f1e6912c5414d9b331916df64c0bd595cdb99 Mon Sep 17 00:00:00 2001 From: "William A. Rowe Jr" Date: Thu, 1 Dec 2016 19:06:25 +0000 Subject: [PATCH 019/224] Promoted git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1772252 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 64 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/STATUS b/STATUS index dfcf953a10..b5a6e336f3 100644 --- a/STATUS +++ b/STATUS @@ -117,23 +117,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - - -PATCHES PROPOSED TO BACKPORT FROM TRUNK: - [ New proposals should be added at the end of the list ] - - *) mod_proxy, mod_ssl: Handle SSLProxy* directives in sections, - allowing per backend TLS configuration. - trunk patch: http://svn.apache.org/r1740928 - http://svn.apache.org/r1740960 - http://svn.apache.org/r1740967 - http://svn.apache.org/r1740987 - http://svn.apache.org/r1740998 - http://svn.apache.org/r1742697 - http://svn.apache.org/r1756976 - 2.4.x patch: http://home.apache.org/~ylavic/patches/httpd-2.4.x-r1740928_and_co.patch - +1: ylavic - *) Fix warnings with new compilers, warnings treated as error in maintainer-mode, standard c-89 is enforced trunk patch: http://svn.apache.org/r1702948 @@ -171,21 +154,6 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: +1: jim, ylavic, wrowe ylavic: r1756553 and r1649491 have a CHANGES entry. - *) mod_socache_memcache: Provide memcache STATs to mod_status - trunk patch: http://svn.apache.org/r1768245 - trunk patch: http://svn.apache.org/r1770828 - 2.4.x patch: trunk works - +1: jim - - *) Propose default strict RFC7230 behavior, and HttpProtocolOptions directive - to relax or further constrain some behaviors. - trunk patches: too numerous to list, see - svn log --stop-on-copy http://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x-merge-http-strict/ - 2.4.x patch: see - svn diff -r1767912:HEAD http://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x-merge-http-strict/ - Last updated: 1 Dec with a missing element of http_filters.c - +1: wrowe - *) ap_reclaim_child_processes(): Implement terminate immediately trunk patches: https://svn.apache.org/r1757061 @@ -227,6 +195,38 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: docs: https://svn.apache.org/r1770771 (in addition to the above) +1: sf, jim, wrowe + + +PATCHES PROPOSED TO BACKPORT FROM TRUNK: + [ New proposals should be added at the end of the list ] + + *) mod_proxy, mod_ssl: Handle SSLProxy* directives in sections, + allowing per backend TLS configuration. + trunk patch: http://svn.apache.org/r1740928 + http://svn.apache.org/r1740960 + http://svn.apache.org/r1740967 + http://svn.apache.org/r1740987 + http://svn.apache.org/r1740998 + http://svn.apache.org/r1742697 + http://svn.apache.org/r1756976 + 2.4.x patch: http://home.apache.org/~ylavic/patches/httpd-2.4.x-r1740928_and_co.patch + +1: ylavic + + *) mod_socache_memcache: Provide memcache STATs to mod_status + trunk patch: http://svn.apache.org/r1768245 + trunk patch: http://svn.apache.org/r1770828 + 2.4.x patch: trunk works + +1: jim + + *) Propose default strict RFC7230 behavior, and HttpProtocolOptions directive + to relax or further constrain some behaviors. + trunk patches: too numerous to list, see + svn log --stop-on-copy http://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x-merge-http-strict/ + 2.4.x patch: see + svn diff -r1767912:HEAD http://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x-merge-http-strict/ + Last updated: 1 Dec with a missing element of http_filters.c + +1: wrowe + *) mod_ratelimit: Allow for initial burst of data before we start throttling: PR 60145 trunk patches: -- GitLab From 3d553beaf8b6fd6e8b95f58a3520da07b111abe3 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 2 Dec 2016 11:36:06 +0000 Subject: [PATCH 020/224] Merge r1702948, r1759415 from trunk: httpd compiles warning free on gcc and every new warning will be treated as an error, standard c-89 is enforced http_config: follow up to r1702948: maybe unused, yet maybe usefull too. Submitted by: icing, ylavic Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1772330 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 16 ---------------- acinclude.m4 | 2 +- configure.in | 23 +++++++++++++++++++++-- include/http_config.h | 19 ++++++++++++++++++- include/scoreboard.h | 2 +- 5 files changed, 41 insertions(+), 21 deletions(-) diff --git a/STATUS b/STATUS index b5a6e336f3..d0d91b1c46 100644 --- a/STATUS +++ b/STATUS @@ -117,22 +117,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) Fix warnings with new compilers, warnings treated as error - in maintainer-mode, standard c-89 is enforced - trunk patch: http://svn.apache.org/r1702948 - http://svn.apache.org/r1759415 - 2.4.x patch: http://home.apache.org/~ylavic/patches/httpd-2.4.x-r1702948_and_co.patch - +1: ylavic, jorton, wrowe - jchampion: r1702948 doesn't quite work as advertised. -Werror is never - added to CFLAGS because when combined with -Wstrict-prototypes, - the AC_LANG_PROGRAM won't compile (it uses a bare main()). - ylavic: Maybe the -Werror case could be handled later, for now this series - avoids a lot of "warning: 'aplog_module_index' defined but not - used [-Wunused-const-variable=]" thanks to AP_MAYBE_UNUSED. - jchampion: Fine by me. I just think the dead code should be removed from - the backport in the meantime, so people don't have a false sense - of security. - *) mod_cache: Bring up-to-date w/ trunk. trunk patch: try to use the key of a possible open but stale cache entry (PR 50317) diff --git a/acinclude.m4 b/acinclude.m4 index d0afed34ef..2605e20cec 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -734,7 +734,7 @@ AC_DEFUN([APACHE_ADD_GCC_CFLAG], [ AC_CACHE_CHECK([whether gcc accepts $1], ap_gcc_ckvar, [ save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $1" - AC_COMPILE_IFELSE([AC_LANG_SOURCE([int foo() { return 0; }])], + AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [ap_gcc_ckvar=yes], [ap_gcc_ckvar=no]) CFLAGS="$save_CFLAGS" ]) diff --git a/configure.in b/configure.in index c59c54257c..7ae20b83d0 100644 --- a/configure.in +++ b/configure.in @@ -596,11 +596,12 @@ AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn o APR_ADDTO(CPPFLAGS, -DAP_DEBUG) if test "$GCC" = "yes"; then APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wpointer-arith]) + APACHE_ADD_GCC_CFLAG([-std=c89]) + APACHE_ADD_GCC_CFLAG([-Werror]) APACHE_ADD_GCC_CFLAG([-Wdeclaration-after-statement]) - APACHE_ADD_GCC_CFLAG([-Werror=declaration-after-statement]) APACHE_ADD_GCC_CFLAG([-Wformat]) APACHE_ADD_GCC_CFLAG([-Wformat-security]) - APACHE_ADD_GCC_CFLAG([-Werror=format-security]) + APACHE_ADD_GCC_CFLAG([-Wunused]) elif test "$AIX_XLC" = "yes"; then APR_ADDTO(CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro) fi @@ -808,6 +809,13 @@ AC_MSG_NOTICE([]) AC_MSG_NOTICE([Restore user-defined environment settings...]) AC_MSG_NOTICE([]) +APACHE_CONF_SEL_CC=${CC} +APACHE_CONF_SEL_CFLAGS=${CFLAGS} +APACHE_CONF_SEL_LDFLAGS=${LDFLAGS} +APACHE_CONF_SEL_LIBS=${LIBS} +APACHE_CONF_SEL_CPPFLAGS=${CPPFLAGS} +APACHE_CONF_SEL_CPP=${CPP} + APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_) APR_RESTORE_THE_ENVIRONMENT(CFLAGS, EXTRA_) APR_RESTORE_THE_ENVIRONMENT(CXXFLAGS, EXTRA_) @@ -865,3 +873,14 @@ test -d docs/conf||$mkdir_p docs/conf AC_CONFIG_FILES(docs/conf/httpd.conf docs/conf/extra/httpd-autoindex.conf docs/conf/extra/httpd-dav.conf docs/conf/extra/httpd-default.conf docs/conf/extra/httpd-info.conf docs/conf/extra/httpd-languages.conf docs/conf/extra/httpd-manual.conf docs/conf/extra/httpd-mpm.conf docs/conf/extra/httpd-multilang-errordoc.conf docs/conf/extra/httpd-ssl.conf docs/conf/extra/httpd-userdir.conf docs/conf/extra/httpd-vhosts.conf docs/conf/extra/proxy-html.conf include/ap_config_layout.h support/apxs support/apachectl support/dbmmanage support/envvars-std support/log_server_status support/logresolve.pl support/phf_abuse_log.cgi support/split-logfile build/rules.mk build/pkg/pkginfo build/config_vars.sh) AC_CONFIG_COMMANDS([default], [true], [APACHE_GEN_MAKEFILES]) AC_OUTPUT +AC_MSG_NOTICE([summary of build options: + + Server Version: ${HTTPD_VERSION} + Install prefix: ${prefix} + C compiler: ${APACHE_CONF_SEL_CC} + CFLAGS: ${APACHE_CONF_SEL_CFLAGS} + LDFLAGS: ${APACHE_CONF_SEL_LDFLAGS} + LIBS: ${APACHE_CONF_SEL_LIBS} + CPPFLAGS: ${APACHE_CONF_SEL_CPPFLAGS} + C preprocessor: ${APACHE_CONF_SEL_CPP} +]) diff --git a/include/http_config.h b/include/http_config.h index 5321a8a506..66c5b3192f 100644 --- a/include/http_config.h +++ b/include/http_config.h @@ -409,6 +409,23 @@ struct module_struct { void (*register_hooks) (apr_pool_t *p); }; +/** + * The AP_MAYBE_UNUSED macro is used for variable declarations that + * might potentially exhibit "unused var" warnings on some compilers if + * left untreated. + * Since static intializers are not part of the C language (C89), making + * (void) usage is not possible. However many compiler have proprietary + * mechanism to suppress those warnings. + */ +#ifdef AP_MAYBE_UNUSED +#elif defined(__GNUC__) +# define AP_MAYBE_UNUSED(x) x __attribute__((unused)) +#elif defined(__LCLINT__) +# define AP_MAYBE_UNUSED(x) /*@unused@*/ x +#else +# define AP_MAYBE_UNUSED(x) x +#endif + /** * The APLOG_USE_MODULE macro is used choose which module a file belongs to. * This is necessary to allow per-module loglevel configuration. @@ -424,7 +441,7 @@ struct module_struct { */ #define APLOG_USE_MODULE(foo) \ extern module AP_MODULE_DECLARE_DATA foo##_module; \ - static int * const aplog_module_index = &(foo##_module.module_index) + AP_MAYBE_UNUSED(static int * const aplog_module_index) = &(foo##_module.module_index) /** * AP_DECLARE_MODULE is a convenience macro that combines a call of diff --git a/include/scoreboard.h b/include/scoreboard.h index d712bd43b4..e3c68d26cb 100644 --- a/include/scoreboard.h +++ b/include/scoreboard.h @@ -26,7 +26,7 @@ extern "C" { #endif -#ifdef HAVE_SYS_TIMES_H +#ifdef APR_HAVE_SYS_TIME_H #include #include #endif -- GitLab From 92230a27335e52fcbee695123c0bc18e7a75ea8e Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 2 Dec 2016 11:42:13 +0000 Subject: [PATCH 021/224] Merge r1597533, r1649491, r1665216, r1756553, r1756631, r1726675, r1718496, r1718476, r1747469 from trunk: mod_cache: try to use the key of a possible open but stale cache entry if we have one in cache_try_lock(). PR 50317 Submitted by: Ruediger Pluem * modules/cache/mod_socache_memcache.c (socache_mc_store): Pass through expiration time. Submitted by: Faidon Liambotis , jorton * mod_cache: Preserve the Content-Type in case of 304 response. 304 does not contain Content-Type and mod_mime regenerates the Content-Type based on the r->filename. This later leads to original Content-Type to be lost (overwriten by whatever mod_mime generates). mod_cache: Use the actual URI path and query-string for identifying the cached entity (key), such that rewrites are taken into account when running afterwards (CacheQuickHandler off). PR 21935. mod_cache: follow up to r1756553: log the real/actual cached URI (debug). better s-maxage support + *) mod_cache: Consider Cache-Control: s-maxage in expiration + calculations. [Eric Covener] + + *) mod_cache: Allow caching of responses with an Expires header + in the past that also has Cache-Control: max-age or s-maxage. + PR55156. [Eric Covener] remove dead code leftover from r1023387. Prior to this revision, there was an apr_atoi64 in this context. Now, ap_cache_control() sets control.max_age (which is checked here) when the maxage value was parsed OK. duplicate debug-level AH00764 in the just-validated path. Rename ap_casecmpstr[n]() to ap_cstr_casecmp[n](), update with APR doxygen Submitted by: jkaluza, jorton, jkaluza, ylavic, ylavic, covener, covener, covener, wrowe Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1772331 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 7 ++ STATUS | 21 ------ modules/cache/cache_storage.c | 50 +++++++------ modules/cache/cache_util.c | 107 +++++++++++---------------- modules/cache/cache_util.h | 2 +- modules/cache/mod_cache.c | 89 +++++++++++++--------- modules/cache/mod_cache_disk.c | 17 ++++- modules/cache/mod_file_cache.c | 6 +- modules/cache/mod_socache_memcache.c | 10 ++- 9 files changed, 160 insertions(+), 149 deletions(-) diff --git a/CHANGES b/CHANGES index 0f4e175b81..0feceb7509 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,13 @@ Changes with Apache 2.4.24 + *) mod_socache_memcache: Pass expiration time through to memcached. + [Faidon Liambotis , Joe Orton] + + *) mod_cache: Use the actual URI path and query-string for identifying the + cached entity (key), such that rewrites are taken into account when + running afterwards (CacheQuickHandler off). PR 21935. [Yann Ylavic] + *) mod_http2: new directive 'H2EarlyHints' to enable sending of HTTP status 103 interim responses. Disabled by default. [Stefan Eissing] diff --git a/STATUS b/STATUS index d0d91b1c46..dcd3489fe6 100644 --- a/STATUS +++ b/STATUS @@ -117,27 +117,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) mod_cache: Bring up-to-date w/ trunk. - trunk patch: - try to use the key of a possible open but stale cache entry (PR 50317) - http://svn.apache.org/r1597533 - socache_mc_store: Pass through expiration time. - http://svn.apache.org/r1649491 - Preserve the Content-Type in case of 304 response - http://svn.apache.org/r1665216 - Use the actual URI path and query-string (PR 21935) - http://svn.apache.org/r1756553 - http://svn.apache.org/r1756631 - better s-maxage support - http://svn.apache.org/r1726675 - http://svn.apache.org/r1718496 - http://svn.apache.org/r1718476 - Rename ap_casecmpstr[n]() to ap_cstr_casecmp[n](), update with APR doxygen - http://svn.apache.org/r1747469 - 2.4.x patch: http://home.apache.org/~jim/patches/httpd-2.4-cache.patch.txt - +1: jim, ylavic, wrowe - ylavic: r1756553 and r1649491 have a CHANGES entry. - *) ap_reclaim_child_processes(): Implement terminate immediately trunk patches: https://svn.apache.org/r1757061 diff --git a/modules/cache/cache_storage.c b/modules/cache/cache_storage.c index 59d12aca15..1a75cc1d81 100644 --- a/modules/cache/cache_storage.c +++ b/modules/cache/cache_storage.c @@ -115,7 +115,7 @@ int cache_create_entity(cache_request_rec *cache, request_rec *r, static int filter_header_do(void *v, const char *key, const char *val) { - if ((*key == 'W' || *key == 'w') && !strcasecmp(key, "Warning") + if ((*key == 'W' || *key == 'w') && !ap_cstr_casecmp(key, "Warning") && *val == '1') { /* any stored Warning headers with warn-code 1xx (see section * 14.46) MUST be deleted from the cache entry and the forwarded @@ -129,7 +129,7 @@ static int filter_header_do(void *v, const char *key, const char *val) } static int remove_header_do(void *v, const char *key, const char *val) { - if ((*key == 'W' || *key == 'w') && !strcasecmp(key, "Warning")) { + if ((*key == 'W' || *key == 'w') && !ap_cstr_casecmp(key, "Warning")) { /* any stored Warning headers with warn-code 2xx MUST be retained * in the cache entry and the forwarded response. */ @@ -427,7 +427,9 @@ int cache_select(cache_request_rec *cache, request_rec *r) } static apr_status_t cache_canonicalise_key(request_rec *r, apr_pool_t* p, - const char *uri, apr_uri_t *parsed_uri, const char **key) + const char *uri, const char *query, + apr_uri_t *parsed_uri, + const char **key) { cache_server_conf *conf; char *port_str, *hn, *lcs; @@ -563,7 +565,7 @@ static apr_status_t cache_canonicalise_key(request_rec *r, apr_pool_t* p, * if needed. */ path = uri; - querystring = parsed_uri->query; + querystring = apr_pstrdup(p, query ? query : parsed_uri->query); if (conf->ignore_session_id->nelts) { int i; char **identifier; @@ -588,7 +590,7 @@ static apr_status_t cache_canonicalise_key(request_rec *r, apr_pool_t* p, /* * Check if the identifier is in the querystring and cut it out. */ - if (querystring) { + if (querystring && *querystring) { /* * First check if the identifier is at the beginning of the * querystring and followed by a '=' @@ -605,7 +607,7 @@ static apr_status_t cache_canonicalise_key(request_rec *r, apr_pool_t* p, * identifier with a '&' and append a '=' */ complete = apr_pstrcat(p, "&", *identifier, "=", NULL); - param = strstr(querystring, complete); + param = ap_strstr_c(querystring, complete); /* If we found something we are sitting on the '&' */ if (param) { param++; @@ -669,7 +671,11 @@ static apr_status_t cache_canonicalise_key(request_rec *r, apr_pool_t* p, apr_status_t cache_generate_key_default(request_rec *r, apr_pool_t* p, const char **key) { - return cache_canonicalise_key(r, p, r->uri, &r->parsed_uri, key); + /* We want the actual query-string, which may differ from + * r->parsed_uri.query (immutable), so use "" (not NULL). + */ + const char *args = r->args ? r->args : ""; + return cache_canonicalise_key(r, p, r->uri, args, &r->parsed_uri, key); } /* @@ -709,12 +715,13 @@ int cache_invalidate(cache_request_rec *cache, request_rec *r) location = apr_table_get(r->headers_out, "Location"); if (location) { - if (APR_SUCCESS != apr_uri_parse(r->pool, location, &location_uri) - || APR_SUCCESS - != cache_canonicalise_key(r, r->pool, location, - &location_uri, &location_key) - || !(r->parsed_uri.hostname && location_uri.hostname - && !strcmp(r->parsed_uri.hostname, + if (apr_uri_parse(r->pool, location, &location_uri) + || cache_canonicalise_key(r, r->pool, + location, NULL, + &location_uri, &location_key) + || !(r->parsed_uri.hostname + && location_uri.hostname + && !strcmp(r->parsed_uri.hostname, location_uri.hostname))) { location_key = NULL; } @@ -722,14 +729,15 @@ int cache_invalidate(cache_request_rec *cache, request_rec *r) content_location = apr_table_get(r->headers_out, "Content-Location"); if (content_location) { - if (APR_SUCCESS - != apr_uri_parse(r->pool, content_location, - &content_location_uri) - || APR_SUCCESS - != cache_canonicalise_key(r, r->pool, content_location, - &content_location_uri, &content_location_key) - || !(r->parsed_uri.hostname && content_location_uri.hostname - && !strcmp(r->parsed_uri.hostname, + if (apr_uri_parse(r->pool, content_location, + &content_location_uri) + || cache_canonicalise_key(r, r->pool, + content_location, NULL, + &content_location_uri, + &content_location_key) + || !(r->parsed_uri.hostname + && content_location_uri.hostname + && !strcmp(r->parsed_uri.hostname, content_location_uri.hostname))) { content_location_key = NULL; } diff --git a/modules/cache/cache_util.c b/modules/cache/cache_util.c index 1d65d3f7f8..096058308e 100644 --- a/modules/cache/cache_util.c +++ b/modules/cache/cache_util.c @@ -31,8 +31,9 @@ extern module AP_MODULE_DECLARE_DATA cache_module; * in "filter". All but the path comparisons are case-insensitive. */ static int uri_meets_conditions(const apr_uri_t *filter, const int pathlen, - const apr_uri_t *url) + request_rec *r) { + const apr_uri_t *url = &r->parsed_uri; /* Scheme, hostname port and local part. The filter URI and the * URI we test may have the following shapes: @@ -55,7 +56,7 @@ static int uri_meets_conditions(const apr_uri_t *filter, const int pathlen, } else { /* The URI scheme must be present and identical except for case. */ - if (!url->scheme || strcasecmp(filter->scheme, url->scheme)) { + if (!url->scheme || ap_cstr_casecmp(filter->scheme, url->scheme)) { return 0; } @@ -113,7 +114,7 @@ static int uri_meets_conditions(const apr_uri_t *filter, const int pathlen, /* For HTTP caching purposes, an empty (NULL) path is equivalent to * a single "/" path. RFCs 3986/2396 */ - if (!url->path) { + if (!r->uri) { if (*filter->path == '/' && pathlen == 1) { return 1; } @@ -125,7 +126,7 @@ static int uri_meets_conditions(const apr_uri_t *filter, const int pathlen, /* Url has met all of the filter conditions so far, determine * if the paths match. */ - return !strncmp(filter->path, url->path, pathlen); + return !strncmp(filter->path, r->uri, pathlen); } static cache_provider_list *get_provider(request_rec *r, struct cache_enable *ent, @@ -167,8 +168,7 @@ static cache_provider_list *get_provider(request_rec *r, struct cache_enable *en } cache_provider_list *cache_get_providers(request_rec *r, - cache_server_conf *conf, - apr_uri_t uri) + cache_server_conf *conf) { cache_dir_conf *dconf = ap_get_module_config(r->per_dir_config, &cache_module); cache_provider_list *providers = NULL; @@ -183,7 +183,7 @@ cache_provider_list *cache_get_providers(request_rec *r, for (i = 0; i < conf->cachedisable->nelts; i++) { struct cache_disable *ent = (struct cache_disable *)conf->cachedisable->elts; - if (uri_meets_conditions(&ent[i].url, ent[i].pathlen, &uri)) { + if (uri_meets_conditions(&ent[i].url, ent[i].pathlen, r)) { /* Stop searching now. */ return NULL; } @@ -200,7 +200,7 @@ cache_provider_list *cache_get_providers(request_rec *r, for (i = 0; i < conf->cacheenable->nelts; i++) { struct cache_enable *ent = (struct cache_enable *)conf->cacheenable->elts; - if (uri_meets_conditions(&ent[i].url, ent[i].pathlen, &uri)) { + if (uri_meets_conditions(&ent[i].url, ent[i].pathlen, r)) { providers = get_provider(r, &ent[i], providers); } } @@ -284,7 +284,25 @@ apr_status_t cache_try_lock(cache_server_conf *conf, cache_request_rec *cache, /* create the key if it doesn't exist */ if (!cache->key) { - cache_generate_key(r, r->pool, &cache->key); + cache_handle_t *h; + /* + * Try to use the key of a possible open but stale cache + * entry if we have one. + */ + if (cache->handle != NULL) { + h = cache->handle; + } + else { + h = cache->stale_handle; + } + if ((h != NULL) && + (h->cache_obj != NULL) && + (h->cache_obj->key != NULL)) { + cache->key = apr_pstrdup(r->pool, h->cache_obj->key); + } + else { + cache_generate_key(r, r->pool, &cache->key); + } } /* create a hashed filename from the key, and save it for later */ @@ -315,7 +333,7 @@ apr_status_t cache_try_lock(cache_server_conf *conf, cache_request_rec *cache, status = apr_stat(&finfo, lockname, APR_FINFO_MTIME | APR_FINFO_NLINK, r->pool); if (!(APR_STATUS_IS_ENOENT(status)) && APR_SUCCESS != status) { - ap_log_rerror(APLOG_MARK, APLOG_ERR, APR_EEXIST, r, APLOGNO(00779) + ap_log_rerror(APLOG_MARK, APLOG_ERR, status, r, APLOGNO(00779) "Could not stat a cache lock file: %s", lockname); return status; @@ -981,12 +999,7 @@ int ap_cache_control(request_rec *r, cache_control_t *cc, char *header = apr_pstrdup(r->pool, pragma_header); const char *token = cache_strqtok(header, CACHE_SEPARATOR, &last); while (token) { - /* handle most common quickest case... */ - if (!strcmp(token, "no-cache")) { - cc->no_cache = 1; - } - /* ...then try slowest case */ - else if (!strcasecmp(token, "no-cache")) { + if (!ap_cstr_casecmp(token, "no-cache")) { cc->no_cache = 1; } token = cache_strqtok(NULL, CACHE_SEPARATOR, &last); @@ -1003,52 +1016,36 @@ int ap_cache_control(request_rec *r, cache_control_t *cc, switch (token[0]) { case 'n': case 'N': { - /* handle most common quickest cases... */ - if (!strcmp(token, "no-cache")) { - cc->no_cache = 1; - } - else if (!strcmp(token, "no-store")) { - cc->no_store = 1; - } - /* ...then try slowest cases */ - else if (!strncasecmp(token, "no-cache", 8)) { + if (!ap_cstr_casecmpn(token, "no-cache", 8)) { if (token[8] == '=') { cc->no_cache_header = 1; } else if (!token[8]) { cc->no_cache = 1; } - break; } - else if (!strcasecmp(token, "no-store")) { + else if (!ap_cstr_casecmp(token, "no-store")) { cc->no_store = 1; } - else if (!strcasecmp(token, "no-transform")) { + else if (!ap_cstr_casecmp(token, "no-transform")) { cc->no_transform = 1; } break; } case 'm': case 'M': { - /* handle most common quickest cases... */ - if (!strcmp(token, "max-age=0")) { - cc->max_age = 1; - cc->max_age_value = 0; - } - else if (!strcmp(token, "must-revalidate")) { - cc->must_revalidate = 1; - } - /* ...then try slowest cases */ - else if (!strncasecmp(token, "max-age", 7)) { + if (!ap_cstr_casecmpn(token, "max-age", 7)) { if (token[7] == '=' && !apr_strtoff(&offt, token + 8, &endp, 10) && endp > token + 8 && !*endp) { cc->max_age = 1; cc->max_age_value = offt; } - break; } - else if (!strncasecmp(token, "max-stale", 9)) { + else if (!ap_cstr_casecmp(token, "must-revalidate")) { + cc->must_revalidate = 1; + } + else if (!ap_cstr_casecmpn(token, "max-stale", 9)) { if (token[9] == '=' && !apr_strtoff(&offt, token + 10, &endp, 10) && endp > token + 10 && !*endp) { @@ -1059,63 +1056,51 @@ int ap_cache_control(request_rec *r, cache_control_t *cc, cc->max_stale = 1; cc->max_stale_value = -1; } - break; } - else if (!strncasecmp(token, "min-fresh", 9)) { + else if (!ap_cstr_casecmpn(token, "min-fresh", 9)) { if (token[9] == '=' && !apr_strtoff(&offt, token + 10, &endp, 10) && endp > token + 10 && !*endp) { cc->min_fresh = 1; cc->min_fresh_value = offt; } - break; - } - else if (!strcasecmp(token, "must-revalidate")) { - cc->must_revalidate = 1; } break; } case 'o': case 'O': { - if (!strcasecmp(token, "only-if-cached")) { + if (!ap_cstr_casecmp(token, "only-if-cached")) { cc->only_if_cached = 1; } break; } case 'p': case 'P': { - /* handle most common quickest cases... */ - if (!strcmp(token, "private")) { - cc->private = 1; - } - /* ...then try slowest cases */ - else if (!strcasecmp(token, "public")) { + if (!ap_cstr_casecmp(token, "public")) { cc->public = 1; } - else if (!strncasecmp(token, "private", 7)) { + else if (!ap_cstr_casecmpn(token, "private", 7)) { if (token[7] == '=') { cc->private_header = 1; } else if (!token[7]) { cc->private = 1; } - break; } - else if (!strcasecmp(token, "proxy-revalidate")) { + else if (!ap_cstr_casecmp(token, "proxy-revalidate")) { cc->proxy_revalidate = 1; } break; } case 's': case 'S': { - if (!strncasecmp(token, "s-maxage", 8)) { + if (!ap_cstr_casecmpn(token, "s-maxage", 8)) { if (token[8] == '=' && !apr_strtoff(&offt, token + 9, &endp, 10) && endp > token + 9 && !*endp) { cc->s_maxage = 1; cc->s_maxage_value = offt; } - break; } break; } @@ -1145,8 +1130,7 @@ static int cache_control_remove(request_rec *r, const char *cc_header, switch (token[0]) { case 'n': case 'N': { - if (!strncmp(token, "no-cache", 8) - || !strncasecmp(token, "no-cache", 8)) { + if (!ap_cstr_casecmpn(token, "no-cache", 8)) { if (token[8] == '=') { const char *header = cache_strqtok(token + 9, CACHE_SEPARATOR "\"", &slast); @@ -1163,8 +1147,7 @@ static int cache_control_remove(request_rec *r, const char *cc_header, } case 'p': case 'P': { - if (!strncmp(token, "private", 7) - || !strncasecmp(token, "private", 7)) { + if (!ap_cstr_casecmpn(token, "private", 7)) { if (token[7] == '=') { const char *header = cache_strqtok(token + 8, CACHE_SEPARATOR "\"", &slast); diff --git a/modules/cache/cache_util.h b/modules/cache/cache_util.h index 397efb90db..6b0174c7bd 100644 --- a/modules/cache/cache_util.h +++ b/modules/cache/cache_util.h @@ -300,7 +300,7 @@ apr_status_t cache_remove_lock(cache_server_conf *conf, cache_request_rec *cache, request_rec *r, apr_bucket_brigade *bb); cache_provider_list *cache_get_providers(request_rec *r, - cache_server_conf *conf, apr_uri_t uri); + cache_server_conf *conf); /** * Get a value from a table, where the table may contain multiple diff --git a/modules/cache/mod_cache.c b/modules/cache/mod_cache.c index f2779d6a9d..b857e2ea09 100644 --- a/modules/cache/mod_cache.c +++ b/modules/cache/mod_cache.c @@ -103,7 +103,7 @@ static int cache_quick_handler(request_rec *r, int lookup) /* * Which cache module (if any) should handle this request? */ - if (!(providers = cache_get_providers(r, conf, r->parsed_uri))) { + if (!(providers = cache_get_providers(r, conf))) { return DECLINED; } @@ -413,7 +413,7 @@ static int cache_handler(request_rec *r) /* * Which cache module (if any) should handle this request? */ - if (!(providers = cache_get_providers(r, conf, r->parsed_uri))) { + if (!(providers = cache_get_providers(r, conf))) { return DECLINED; } @@ -973,12 +973,20 @@ static apr_status_t cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in) /* Have we received a 304 response without any headers at all? Fall back to * the original headers in the original cached request. */ - if (r->status == HTTP_NOT_MODIFIED && cache->stale_handle && !cc_out - && !pragma) { - cc_out = cache_table_getm(r->pool, cache->stale_handle->resp_hdrs, - "Cache-Control"); - pragma = cache_table_getm(r->pool, cache->stale_handle->resp_hdrs, - "Pragma"); + if (r->status == HTTP_NOT_MODIFIED && cache->stale_handle) { + if (!cc_out && !pragma) { + cc_out = cache_table_getm(r->pool, cache->stale_handle->resp_hdrs, + "Cache-Control"); + pragma = cache_table_getm(r->pool, cache->stale_handle->resp_hdrs, + "Pragma"); + } + + /* 304 does not contain Content-Type and mod_mime regenerates the + * Content-Type based on the r->filename. This would lead to original + * Content-Type to be lost (overwriten by whatever mod_mime generates). + * We preserves the original Content-Type here. */ + ap_set_content_type(r, apr_table_get( + cache->stale_handle->resp_hdrs, "Content-Type")); } /* Parse the cache control header */ @@ -1017,6 +1025,8 @@ static apr_status_t cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in) * include the following: an Expires header (section 14.21); a * "max-age", "s-maxage", "must-revalidate", "proxy-revalidate", * "public" or "private" cache-control directive (section 14.9). + * + * FIXME: Wrong if cc_out has just an extension we don't know about */ } else { @@ -1031,9 +1041,12 @@ static apr_status_t cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in) /* if a broken Expires header is present, don't cache it */ reason = apr_pstrcat(p, "Broken expires header: ", exps, NULL); } - else if (!dconf->store_expired && exp != APR_DATE_BAD + else if (!control.s_maxage && !control.max_age + && !dconf->store_expired && exp != APR_DATE_BAD && exp < r->request_time) { - /* if a Expires header is in the past, don't cache it */ + /* if a Expires header is in the past, don't cache it + * Unless CC: s-maxage or max-age is present + */ reason = "Expires header already expired; not cacheable"; } else if (!dconf->store_expired && (control.must_revalidate @@ -1177,8 +1190,8 @@ static apr_status_t cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in) ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r, APLOGNO(02473) "cache: %s responded with an uncacheable 304, " - "retrying the request. Reason: %s", - r->unparsed_uri, reason); + "retrying the request %s. Reason: %s", + cache->key, r->unparsed_uri, reason); /* we've got a cache conditional miss! tell anyone who cares */ cache_run_cache_status(cache->handle, r, r->headers_out, AP_CACHE_MISS, @@ -1212,8 +1225,8 @@ static apr_status_t cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in) if (reason) { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(00768) - "cache: %s not cached. Reason: %s", r->unparsed_uri, - reason); + "cache: %s not cached for request %s. Reason: %s", + cache->key, r->unparsed_uri, reason); /* we've got a cache miss! tell anyone who cares */ cache_run_cache_status(cache->handle, r, r->headers_out, AP_CACHE_MISS, @@ -1331,7 +1344,8 @@ static apr_status_t cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in) } ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(00769) - "cache: Caching url: %s", r->unparsed_uri); + "cache: Caching url %s for request %s", + cache->key, r->unparsed_uri); /* We are actually caching this response. So it does not * make sense to remove this entity any more. @@ -1387,7 +1401,26 @@ static apr_status_t cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in) "replacing with now"); } + + /* CC has priority over Expires. */ + if (control.s_maxage || control.max_age) { + apr_int64_t x; + + x = control.s_maxage ? control.s_maxage_value : control.max_age_value; + x = x * MSEC_ONE_SEC; + + if (x < dconf->minex) { + x = dconf->minex; + } + if (x > dconf->maxex) { + x = dconf->maxex; + } + exp = date + x; + } + /* if no expiry date then + * if Cache-Control: s-maxage + * expiry date = date + smaxage * if Cache-Control: max-age * expiry date = date + max-age * else if lastmod @@ -1395,28 +1428,9 @@ static apr_status_t cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in) * else * expire date = date + defaultexpire */ - if (exp == APR_DATE_BAD) { - - if (control.max_age) { - apr_int64_t x; - errno = 0; - x = control.max_age_value; - if (errno) { - x = dconf->defex; - } - else { - x = x * MSEC_ONE_SEC; - } - if (x < dconf->minex) { - x = dconf->minex; - } - if (x > dconf->maxex) { - x = dconf->maxex; - } - exp = date + x; - } - else if ((lastmod != APR_DATE_BAD) && (lastmod < date)) { + if (exp == APR_DATE_BAD) { + if ((lastmod != APR_DATE_BAD) && (lastmod < date)) { /* if lastmod == date then you get 0*conf->factor which results in * an expiration time of now. This causes some problems with * freshness calculations, so we choose the else path... @@ -1558,6 +1572,9 @@ static apr_status_t cache_save_filter(ap_filter_t *f, apr_bucket_brigade *in) /* let someone else attempt to cache */ cache_remove_lock(conf, cache, r, NULL); + ap_log_rerror(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, r, APLOGNO(02971) + "cache: serving %s (revalidated)", r->uri); + return ap_pass_brigade(f->next, bb); } diff --git a/modules/cache/mod_cache_disk.c b/modules/cache/mod_cache_disk.c index 14dee81ff7..52d5dba0b1 100644 --- a/modules/cache/mod_cache_disk.c +++ b/modules/cache/mod_cache_disk.c @@ -786,7 +786,7 @@ static apr_status_t read_table(cache_handle_t *handle, request_rec *r, /* ### What about APR_EOF? */ rv = apr_file_gets(w, MAX_STRING_LEN - 1, file); if (rv != APR_SUCCESS) { - ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(00717) + ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(00717) "Premature end of cache headers."); return rv; } @@ -865,6 +865,7 @@ static apr_status_t read_table(cache_handle_t *handle, request_rec *r, static apr_status_t recall_headers(cache_handle_t *h, request_rec *r) { disk_cache_object_t *dobj = (disk_cache_object_t *) h->cache_obj->vobj; + apr_status_t rv; /* This case should not happen... */ if (!dobj->hdrs.fd) { @@ -877,8 +878,18 @@ static apr_status_t recall_headers(cache_handle_t *h, request_rec *r) h->resp_hdrs = apr_table_make(r->pool, 20); /* Call routine to read the header lines/status line */ - read_table(h, r, h->resp_hdrs, dobj->hdrs.fd); - read_table(h, r, h->req_hdrs, dobj->hdrs.fd); + rv = read_table(h, r, h->resp_hdrs, dobj->hdrs.fd); + if (rv != APR_SUCCESS) { + ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(02987) + "Error reading response headers from %s for %s", + dobj->hdrs.file, dobj->name); + } + rv = read_table(h, r, h->req_hdrs, dobj->hdrs.fd); + if (rv != APR_SUCCESS) { + ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(02988) + "Error reading request headers from %s for %s", + dobj->hdrs.file, dobj->name); + } apr_file_close(dobj->hdrs.fd); diff --git a/modules/cache/mod_file_cache.c b/modules/cache/mod_file_cache.c index 97de196b6b..4199361861 100644 --- a/modules/cache/mod_file_cache.c +++ b/modules/cache/mod_file_cache.c @@ -312,10 +312,10 @@ static int file_cache_handler(request_rec *r) int errstatus; int rc = OK; - /* XXX: not sure if this is right yet - * see comment in http_core.c:default_handler + /* Bail out if r->handler isn't the default value, and doesn't look like a Content-Type + * XXX: Even though we made the user explicitly list each path to cache? */ - if (ap_strcmp_match(r->handler, "*/*")) { + if (ap_strcmp_match(r->handler, "*/*") && !AP_IS_DEFAULT_HANDLER_NAME(r->handler)) { return DECLINED; } diff --git a/modules/cache/mod_socache_memcache.c b/modules/cache/mod_socache_memcache.c index e1fb2357bc..86577a9f7b 100644 --- a/modules/cache/mod_socache_memcache.c +++ b/modules/cache/mod_socache_memcache.c @@ -214,8 +214,14 @@ static apr_status_t socache_mc_store(ap_socache_instance_t *ctx, server_rec *s, return APR_EINVAL; } - /* In APR-util - unclear what 'timeout' is, as it was not implemented */ - rv = apr_memcache_set(ctx->mc, buf, (char*)ucaData, nData, 0, 0); + /* memcache needs time in seconds till expiry; fail if this is not + * positive *before* casting to unsigned (apr_uint32_t). */ + expiry -= apr_time_now(); + if (apr_time_sec(expiry) <= 0) { + return APR_EINVAL; + } + rv = apr_memcache_set(ctx->mc, buf, (char*)ucaData, nData, + apr_time_sec(expiry), 0); if (rv != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_CRIT, rv, s, APLOGNO(00790) -- GitLab From a9077d1c882ab07943a08a055fd1d5e94e4173a5 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 2 Dec 2016 11:42:55 +0000 Subject: [PATCH 022/224] Merge r1757061, r1770750 from trunk: ap_reclaim_child_processes() ignores its first argument note this in the docs, add comment ap_reclaim_child_processes(): Implement terminate immediately The behavior for terminate == 1 was documented but not implemented. Do that now. Submitted by: sf Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1772332 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 7 ------- server/mpm_unix.c | 31 +++++++++++++++++++++---------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/STATUS b/STATUS index dcd3489fe6..2c55ccec64 100644 --- a/STATUS +++ b/STATUS @@ -117,13 +117,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) ap_reclaim_child_processes(): Implement terminate immediately - trunk patches: - https://svn.apache.org/r1757061 - https://svn.apache.org/r1770750 - 2.4.x patch: https://people.apache.org/~sf/PR53555_1_ap_reclaim_child_processes.diff - +1: sf, jim, wrowe - *) Improve mod_status view of async connections trunk patches: https://svn.apache.org/r1738628 diff --git a/server/mpm_unix.c b/server/mpm_unix.c index 7a11854669..dce10a78cf 100644 --- a/server/mpm_unix.c +++ b/server/mpm_unix.c @@ -63,7 +63,13 @@ #undef APLOG_MODULE_INDEX #define APLOG_MODULE_INDEX AP_CORE_MODULE_INDEX -typedef enum {DO_NOTHING, SEND_SIGTERM, SEND_SIGKILL, GIVEUP} action_t; +typedef enum { + DO_NOTHING, + SEND_SIGTERM, + SEND_SIGTERM_NOLOG, + SEND_SIGKILL, + GIVEUP +} action_t; typedef struct extra_process_t { struct extra_process_t *next; @@ -142,6 +148,8 @@ static int reclaim_one_pid(pid_t pid, action_t action) " still did not exit, " "sending a SIGTERM", pid); + /* FALLTHROUGH */ + case SEND_SIGTERM_NOLOG: kill(pid, SIGTERM); break; @@ -193,6 +201,7 @@ AP_DECLARE(void) ap_reclaim_child_processes(int terminate, * children but take no action against * stragglers */ + {SEND_SIGTERM_NOLOG, 0}, /* skipped if terminate == 0 */ {SEND_SIGTERM, apr_time_from_sec(3)}, {SEND_SIGTERM, apr_time_from_sec(5)}, {SEND_SIGTERM, apr_time_from_sec(7)}, @@ -202,19 +211,21 @@ AP_DECLARE(void) ap_reclaim_child_processes(int terminate, int cur_action; /* index of action we decided to take this * iteration */ - int next_action = 1; /* index of first real action */ + int next_action = terminate ? 1 : 2; /* index of first real action */ ap_mpm_query(AP_MPMQ_MAX_DAEMON_USED, &max_daemons); do { - apr_sleep(waittime); - /* don't let waittime get longer than 1 second; otherwise, we don't - * react quickly to the last child exiting, and taking action can - * be delayed - */ - waittime = waittime * 4; - if (waittime > apr_time_from_sec(1)) { - waittime = apr_time_from_sec(1); + if (action_table[next_action].action_time > 0) { + apr_sleep(waittime); + /* don't let waittime get longer than 1 second; otherwise, we don't + * react quickly to the last child exiting, and taking action can + * be delayed + */ + waittime = waittime * 4; + if (waittime > apr_time_from_sec(1)) { + waittime = apr_time_from_sec(1); + } } /* see what action to take, if any */ -- GitLab From a489a66227392f5d1b7ed798b172fcbd24b3c891 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 2 Dec 2016 11:43:55 +0000 Subject: [PATCH 023/224] Merge r1738628, r1757009, r1756848, r1757029 from trunk: Display process slot number in the async overview Fix the number of column for 'Async connections'. There are only 3 columns (writing, keep-alive, closing), not 4. Try to improve the code layout for it to be more readable. Each is on its own line so keep the corresponding "colspan" fields grouped together. r1738628 introduced a new column, 'Slot'. Add an empty cell for it in the last line of the table, in order to fix the layout of the Totals. Replace tab by spaces to be consistent mod_status: note stopping procs in async info table * add new column "stopping", denoting if a process is shutting down * add additional "(old gen)", if a process is from before a graceful reload * add counts of processes and stopping processes to summary line Submitted by: sf, jailletc36, jailletc36, sf Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1772333 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 ++ modules/generators/mod_status.c | 49 +++++++++++++++++++++++---------- 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/CHANGES b/CHANGES index 0feceb7509..3f06e2edd7 100644 --- a/CHANGES +++ b/CHANGES @@ -15,6 +15,9 @@ Changes with Apache 2.4.24 *) mod_ssl: Fix quick renegotiation (OptRenegotiaton) with no intermediate in the client certificate chain. PR 55786. [Yann Ylavic] + *) mod_status: Display the process slot number in the async connection + overview. [Stefan Fritsch] + *) mod_dir: Responses that go through "FallbackResource" might appear to hang due to unterminated chunked encoding. PR58292. [Eric Covener] diff --git a/modules/generators/mod_status.c b/modules/generators/mod_status.c index 70df1a100e..12801f94ce 100644 --- a/modules/generators/mod_status.c +++ b/modules/generators/mod_status.c @@ -531,7 +531,7 @@ static int status_handler(request_rec *r) if (is_async) { int write_completion = 0, lingering_close = 0, keep_alive = 0, - connections = 0; + connections = 0, stopping = 0, procs = 0; /* * These differ from 'busy' and 'ready' in how gracefully finishing * threads are counted. XXX: How to make this clear in the html? @@ -539,13 +539,15 @@ static int status_handler(request_rec *r) int busy_workers = 0, idle_workers = 0; if (!short_report) ap_rputs("\n\n\n" - "" + "" + "" + "" "\n" "" - "\n" + "\n" "" - "" - "\n", r); + "" + "\n", r); for (i = 0; i < server_limit; ++i) { ps_record = ap_get_scoreboard_process(i); if (ps_record->pid) { @@ -555,26 +557,45 @@ static int status_handler(request_rec *r) lingering_close += ps_record->lingering_close; busy_workers += thread_busy_buffer[i]; idle_workers += thread_idle_buffer[i]; - if (!short_report) - ap_rprintf(r, "" - "" + if (!short_report) { + const char *dying = "no"; + const char *old = ""; + if (ps_record->quiescing) { + dying = "yes"; + stopping++; + } + if (ps_record->generation != mpm_generation) + old = " (old gen)"; + procs++; + ap_rprintf(r, "" + "" + "" + "" "" "\n", - ps_record->pid, ps_record->connections, + i, ps_record->pid, + dying, old, + ps_record->connections, ps_record->not_accepting ? "no" : "yes", - thread_busy_buffer[i], thread_idle_buffer[i], + thread_busy_buffer[i], + thread_idle_buffer[i], ps_record->write_completion, ps_record->keep_alive, ps_record->lingering_close); + } } } if (!short_report) { - ap_rprintf(r, "" - "" + ap_rprintf(r, "" + "" + "" + "" + "" "\n
    PID
    SlotPIDStoppingConnectionsThreadsAsync connections
    Async connections
    totalacceptingbusyidlewritingkeep-aliveclosing
    busyidlewritingkeep-aliveclosing
    %" APR_PID_T_FMT "%u%s%u%u
    %u%" APR_PID_T_FMT "%s%s%u%s%u%u%u%u%u
    Sum%d %d%d%d%d%d
    Sum%d%d%d %d%d%d%d%d
    \n", - connections, busy_workers, idle_workers, + procs, stopping, + connections, + busy_workers, idle_workers, write_completion, keep_alive, lingering_close); - } else { ap_rprintf(r, "ConnsTotal: %d\n" -- GitLab From a61a4bd02e483fb45d433343740d0130ee3d8d5d Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 2 Dec 2016 11:44:57 +0000 Subject: [PATCH 024/224] Merge r1705922, r1706523, r1738464, r1738466, r1738486 from trunk: When shutting down a process, free resources early Due to lingering connections, shutting down a process may take a very long time. Free all recycled pools early in the hope that we can already give some memory back to the OS. rename some variables to be more descriptive pid -> pslot tid -> tslot remove unused 'sd' Terminate keep-alive connections when dying When shutting down a process gracefully, terminate keep-alive connections so that we don't get any new requests which may keep the dying process alive longer. Exit threads early during shutdown During graceful shutdown, if there are more running worker threads than open connections, terminate some threads. This frees resources faster, which may be needed for new processes. Exit threads early during shutdown, part 2 Follow up to r1738466: During graceful shutdown, when the listener thread is closing a connection, it needs to wake up a worker thread so that it may terminate. Submitted by: sf Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1772334 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 ++ STATUS | 19 --------- server/mpm/event/event.c | 80 ++++++++++++++++++++++++++++++-------- server/mpm/event/fdqueue.c | 30 +++++++++++++- server/mpm/event/fdqueue.h | 2 + 5 files changed, 96 insertions(+), 38 deletions(-) diff --git a/CHANGES b/CHANGES index 3f06e2edd7..5d2462669e 100644 --- a/CHANGES +++ b/CHANGES @@ -15,6 +15,9 @@ Changes with Apache 2.4.24 *) mod_ssl: Fix quick renegotiation (OptRenegotiaton) with no intermediate in the client certificate chain. PR 55786. [Yann Ylavic] + *) mpm_event: Free memory earlier when shutting down processes. + [Stefan Fritsch] + *) mod_status: Display the process slot number in the async connection overview. [Stefan Fritsch] diff --git a/STATUS b/STATUS index 2c55ccec64..71988742f0 100644 --- a/STATUS +++ b/STATUS @@ -117,25 +117,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) Improve mod_status view of async connections - trunk patches: - https://svn.apache.org/r1738628 - https://svn.apache.org/r1757009 - https://svn.apache.org/r1756848 - https://svn.apache.org/r1757029 - 2.4.x patch: https://people.apache.org/~sf/PR53555_2_mod_status.diff - +1: sf, jim, wrowe - - *) mpm_event: Free resources earlier during shutdown - trunk patches: - https://svn.apache.org/r1705922 - https://svn.apache.org/r1706523 - https://svn.apache.org/r1738464 - https://svn.apache.org/r1738466 - https://svn.apache.org/r1738486 - 2.4.x patch: https://people.apache.org/~sf/PR53555_3_free_early.diff - +1: sf, jim, wrowe - *) mpm_event: Use all free scoreboard slots up to ServerLimit, but don't re-use scoreboard slots of still running, gracefully finishing processes. PR: 53555 diff --git a/server/mpm/event/event.c b/server/mpm/event/event.c index 9871a5f0f0..bd74f24e7c 100644 --- a/server/mpm/event/event.c +++ b/server/mpm/event/event.c @@ -181,6 +181,8 @@ static apr_uint32_t connection_count = 0; /* Number of open connections */ static apr_uint32_t lingering_count = 0; /* Number of connections in lingering close */ static apr_uint32_t suspended_count = 0; /* Number of suspended connections */ static apr_uint32_t clogged_count = 0; /* Number of threads processing ssl conns */ +static apr_uint32_t threads_shutdown = 0; /* Number of threads that have shutdown + early during graceful termination */ static int resource_shortage = 0; static fd_queue_t *worker_queue; static fd_queue_info_t *worker_queue_info; @@ -288,9 +290,8 @@ static apr_pollset_t *event_pollset; /* The structure used to pass unique initialization info to each thread */ typedef struct { - int pid; - int tid; - int sd; + int pslot; /* process slot */ + int tslot; /* worker slot of the thread */ } proc_info; /* Structure used to pass information to the thread responsible for @@ -911,6 +912,8 @@ static int start_lingering_close_nonblocking(event_conn_state_t *cs) || apr_socket_shutdown(csd, APR_SHUTDOWN_WRITE) != APR_SUCCESS) { apr_socket_close(csd); ap_push_pool(worker_queue_info, cs->p); + if (dying) + ap_queue_interrupt_one(worker_queue); return 0; } return start_lingering_close_common(cs, 0); @@ -934,6 +937,8 @@ static int stop_lingering_close(event_conn_state_t *cs) AP_DEBUG_ASSERT(0); } ap_push_pool(worker_queue_info, cs->p); + if (dying) + ap_queue_interrupt_one(worker_queue); return 0; } @@ -1219,6 +1224,9 @@ static void close_listeners(int process_slot, int *closed) } /* wake up the main thread */ kill(ap_my_pid, SIGTERM); + + ap_free_idle_pools(worker_queue_info); + ap_queue_interrupt_all(worker_queue); } } @@ -1439,6 +1447,8 @@ static void process_lingering_close(event_conn_state_t *cs, const apr_pollfd_t * TO_QUEUE_ELEM_INIT(cs); ap_push_pool(worker_queue_info, cs->p); + if (dying) + ap_queue_interrupt_one(worker_queue); } /* call 'func' for all elements of 'q' with timeout less than 'timeout_time'. @@ -1518,7 +1528,7 @@ static void * APR_THREAD_FUNC listener_thread(apr_thread_t * thd, void *dummy) timer_event_t *te; apr_status_t rc; proc_info *ti = dummy; - int process_slot = ti->pid; + int process_slot = ti->pslot; apr_pool_t *tpool = apr_thread_pool_get(thd); void *csd = NULL; apr_pool_t *ptrans; /* Pool for per-transaction stuff */ @@ -1584,6 +1594,12 @@ static void * APR_THREAD_FUNC listener_thread(apr_thread_t * thd, void *dummy) *keepalive_q->total, apr_atomic_read32(&lingering_count), apr_atomic_read32(&suspended_count)); + if (dying) { + ap_log_error(APLOG_MARK, APLOG_TRACE6, 0, ap_server_conf, + "%u/%u workers shutdown", + apr_atomic_read32(&threads_shutdown), + threads_per_child); + } apr_thread_mutex_unlock(timeout_mutex); } } @@ -1818,11 +1834,12 @@ static void * APR_THREAD_FUNC listener_thread(apr_thread_t * thd, void *dummy) /* If all workers are busy, we kill older keep-alive connections so that they * may connect to another process. */ - if (workers_were_busy && *keepalive_q->total) { - ap_log_error(APLOG_MARK, APLOG_TRACE1, 0, ap_server_conf, - "All workers are busy, will close %d keep-alive " - "connections", - *keepalive_q->total); + if ((workers_were_busy || dying) && *keepalive_q->total) { + if (!dying) + ap_log_error(APLOG_MARK, APLOG_TRACE1, 0, ap_server_conf, + "All workers are busy, will close %d keep-alive " + "connections", + *keepalive_q->total); process_timeout_queue(keepalive_q, 0, start_lingering_close_nonblocking); } @@ -1869,6 +1886,34 @@ static void * APR_THREAD_FUNC listener_thread(apr_thread_t * thd, void *dummy) return NULL; } +/* + * During graceful shutdown, if there are more running worker threads than + * open connections, exit one worker thread. + * + * return 1 if thread should exit, 0 if it should continue running. + */ +static int worker_thread_should_exit_early(void) +{ + for (;;) { + apr_uint32_t conns = apr_atomic_read32(&connection_count); + apr_uint32_t dead = apr_atomic_read32(&threads_shutdown); + apr_uint32_t newdead; + + AP_DEBUG_ASSERT(dead <= threads_per_child); + if (conns >= threads_per_child - dead) + return 0; + + newdead = dead + 1; + if (apr_atomic_cas32(&threads_shutdown, newdead, dead) == dead) { + /* + * No other thread has exited in the mean time, safe to exit + * this one. + */ + return 1; + } + } +} + /* XXX For ungraceful termination/restart, we definitely don't want to * wait for active connections to finish but we may want to wait * for idle workers to get out of the queue code and release mutexes, @@ -1879,8 +1924,8 @@ static void * APR_THREAD_FUNC listener_thread(apr_thread_t * thd, void *dummy) static void *APR_THREAD_FUNC worker_thread(apr_thread_t * thd, void *dummy) { proc_info *ti = dummy; - int process_slot = ti->pid; - int thread_slot = ti->tid; + int process_slot = ti->pslot; + int thread_slot = ti->tslot; apr_socket_t *csd = NULL; event_conn_state_t *cs; apr_pool_t *ptrans; /* Pool for per-transaction stuff */ @@ -1916,6 +1961,9 @@ static void *APR_THREAD_FUNC worker_thread(apr_thread_t * thd, void *dummy) if (workers_may_exit) { break; } + if (dying && worker_thread_should_exit_early()) { + break; + } te = NULL; rv = ap_queue_pop_something(worker_queue, &csd, &cs, &ptrans, &te); @@ -1993,9 +2041,8 @@ static void create_listener_thread(thread_starter * ts) apr_status_t rv; my_info = (proc_info *) ap_malloc(sizeof(proc_info)); - my_info->pid = my_child_num; - my_info->tid = -1; /* listener thread doesn't have a thread slot */ - my_info->sd = 0; + my_info->pslot = my_child_num; + my_info->tslot = -1; /* listener thread doesn't have a thread slot */ rv = apr_thread_create(&ts->listener, thread_attr, listener_thread, my_info, pchild); if (rv != APR_SUCCESS) { @@ -2108,9 +2155,8 @@ static void *APR_THREAD_FUNC start_threads(apr_thread_t * thd, void *dummy) } my_info = (proc_info *) ap_malloc(sizeof(proc_info)); - my_info->pid = my_child_num; - my_info->tid = i; - my_info->sd = 0; + my_info->pslot = my_child_num; + my_info->tslot = i; /* We are creating threads right now */ ap_update_child_status_from_indexes(my_child_num, i, diff --git a/server/mpm/event/fdqueue.c b/server/mpm/event/fdqueue.c index 343146f4c6..64b318d0e0 100644 --- a/server/mpm/event/fdqueue.c +++ b/server/mpm/event/fdqueue.c @@ -280,6 +280,19 @@ void ap_pop_pool(apr_pool_t ** recycled_pool, fd_queue_info_t * queue_info) } } +void ap_free_idle_pools(fd_queue_info_t *queue_info) +{ + apr_pool_t *p; + + queue_info->max_recycled_pools = 0; + do { + ap_pop_pool(&p, queue_info); + if (p != NULL) + apr_pool_destroy(p); + } while (p != NULL); +} + + apr_status_t ap_queue_info_term(fd_queue_info_t * queue_info) { apr_status_t rv; @@ -477,17 +490,30 @@ apr_status_t ap_queue_pop_something(fd_queue_t * queue, apr_socket_t ** sd, return rv; } -apr_status_t ap_queue_interrupt_all(fd_queue_t * queue) +static apr_status_t queue_interrupt(fd_queue_t * queue, int all) { apr_status_t rv; if ((rv = apr_thread_mutex_lock(queue->one_big_mutex)) != APR_SUCCESS) { return rv; } - apr_thread_cond_broadcast(queue->not_empty); + if (all) + apr_thread_cond_broadcast(queue->not_empty); + else + apr_thread_cond_signal(queue->not_empty); return apr_thread_mutex_unlock(queue->one_big_mutex); } +apr_status_t ap_queue_interrupt_all(fd_queue_t * queue) +{ + return queue_interrupt(queue, 1); +} + +apr_status_t ap_queue_interrupt_one(fd_queue_t * queue) +{ + return queue_interrupt(queue, 0); +} + apr_status_t ap_queue_term(fd_queue_t * queue) { apr_status_t rv; diff --git a/server/mpm/event/fdqueue.h b/server/mpm/event/fdqueue.h index 955816b7d2..37be684d15 100644 --- a/server/mpm/event/fdqueue.h +++ b/server/mpm/event/fdqueue.h @@ -52,6 +52,7 @@ apr_status_t ap_queue_info_wait_for_idler(fd_queue_info_t * queue_info, int *had_to_block); apr_status_t ap_queue_info_term(fd_queue_info_t * queue_info); apr_uint32_t ap_queue_info_get_idlers(fd_queue_info_t * queue_info); +void ap_free_idle_pools(fd_queue_info_t *queue_info); struct fd_queue_elem_t { @@ -98,6 +99,7 @@ apr_status_t ap_queue_pop_something(fd_queue_t * queue, apr_socket_t ** sd, event_conn_state_t ** ecs, apr_pool_t ** p, timer_event_t ** te); apr_status_t ap_queue_interrupt_all(fd_queue_t * queue); +apr_status_t ap_queue_interrupt_one(fd_queue_t * queue); apr_status_t ap_queue_term(fd_queue_t * queue); #endif /* FDQUEUE_H */ -- GitLab From e7407f84ec2a1b7f2c04775a230f147c08860c7c Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 2 Dec 2016 11:46:38 +0000 Subject: [PATCH 025/224] Merge r1738631, r1738633, r1738635, r1757030, r1757031, r1770752, r1770768 from trunk: Don't take over scoreboard slots from gracefully finishing threads Otherwise the old and the new thread will both update the same scoreboard slot with undefined results. add comments Document which directives set which variables Make ap_find_child_by_pid() look at all slots that have ever been used. This is preparation to allow to use more scoreboard slots in mpm event. mpm_event: minor code simplification - move variable initializations into declarations - use max_workers variable mpm_event: don't re-use scoreboard slots that are still in use This causes inconsistent data in the scoreboard (due to async connections) and makes it difficult to determine what is going on. Therefore it is not a useful fix for the scoreboard-full issues (PR 53555). The consent on the dev list is that we should allocate/use more scoreboard entries instead. Use all available scoreboard slots Allow to use all slots up to ServerLimit. This makes 'scoreboard full' errors much less likely. And if ther is a situation where the scoreboard is full, don't make any more processes finish gracefully due to reduced load until some old processes have terminated. Otherwise, the situation would get worse once the load increases again. ap_daemon_limit is renamed to the more descriptive active_server_limit, to make sure that all its uses are taken care of. PR 53555 mpm_event: add clarifying comment from jim Submitted by: sf Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1772335 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 8 + STATUS | 15 -- server/mpm/event/event.c | 305 ++++++++++++++++++--------------------- server/scoreboard.c | 2 +- 4 files changed, 149 insertions(+), 181 deletions(-) diff --git a/CHANGES b/CHANGES index 5d2462669e..dd69e7c0af 100644 --- a/CHANGES +++ b/CHANGES @@ -15,6 +15,14 @@ Changes with Apache 2.4.24 *) mod_ssl: Fix quick renegotiation (OptRenegotiaton) with no intermediate in the client certificate chain. PR 55786. [Yann Ylavic] + *) event: Allow to use the whole allocated scoreboard (up to ServerLimit + slots) to avoid scoreboard full errors when some processes are finishing + gracefully. Also, make gracefully finishing processes close all + keep-alive connections. PR 53555. [Stefan Fritsch] + + *) mpm_event: Don't take over scoreboard slots from gracefully finishing + threads. [Stefan Fritsch] + *) mpm_event: Free memory earlier when shutting down processes. [Stefan Fritsch] diff --git a/STATUS b/STATUS index 71988742f0..517baab617 100644 --- a/STATUS +++ b/STATUS @@ -117,21 +117,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) mpm_event: Use all free scoreboard slots up to ServerLimit, but don't - re-use scoreboard slots of still running, gracefully finishing processes. - PR: 53555 - trunk patches: - https://svn.apache.org/r1738631 - https://svn.apache.org/r1738633 - https://svn.apache.org/r1738635 - https://svn.apache.org/r1757030 - https://svn.apache.org/r1757031 - https://svn.apache.org/r1770752 - https://svn.apache.org/r1770768 - 2.4.x patch: https://people.apache.org/~sf/PR53555_4_use_all_slots.diff - docs: https://svn.apache.org/r1770771 (in addition to the above) - +1: sf, jim, wrowe - PATCHES PROPOSED TO BACKPORT FROM TRUNK: diff --git a/server/mpm/event/event.c b/server/mpm/event/event.c index bd74f24e7c..c133c1a0a3 100644 --- a/server/mpm/event/event.c +++ b/server/mpm/event/event.c @@ -160,15 +160,18 @@ #endif #define WORKER_FACTOR_SCALE 16 /* scale factor to allow fractional values */ static unsigned int worker_factor = DEFAULT_WORKER_FACTOR * WORKER_FACTOR_SCALE; - -static int threads_per_child = 0; /* Worker threads per child */ -static int ap_daemons_to_start = 0; -static int min_spare_threads = 0; -static int max_spare_threads = 0; -static int ap_daemons_limit = 0; -static int max_workers = 0; -static int server_limit = 0; -static int thread_limit = 0; + /* AsyncRequestWorkerFactor * 16 */ + +static int threads_per_child = 0; /* ThreadsPerChild */ +static int ap_daemons_to_start = 0; /* StartServers */ +static int min_spare_threads = 0; /* MinSpareThreads */ +static int max_spare_threads = 0; /* MaxSpareThreads */ +static int active_daemons_limit = 0; /* MaxRequestWorkers / ThreadsPerChild */ +static int active_daemons = 0; /* workers that still active, i.e. are + not shutting down gracefully */ +static int max_workers = 0; /* MaxRequestWorkers */ +static int server_limit = 0; /* ServerLimit */ +static int thread_limit = 0; /* ThreadLimit */ static int had_healthy_child = 0; static int dying = 0; static int workers_may_exit = 0; @@ -336,6 +339,14 @@ typedef struct event_retained_data { * scoreboard. */ int max_daemons_limit; + + /* + * All running workers, active and shutting down, including those that + * may be left from before a graceful restart. + * Not kept up-to-date when shutdown is pending. + */ + int total_daemons; + /* * idle_spawn_rate is the number of children that will be spawned on the * next maintenance cycle if there aren't enough idle servers. It is @@ -549,7 +560,7 @@ static int event_query(int query_code, int *result, apr_status_t *rv) *result = ap_max_requests_per_child; break; case AP_MPMQ_MAX_DAEMONS: - *result = ap_daemons_limit; + *result = active_daemons_limit; break; case AP_MPMQ_MPM_STATE: *result = mpm_state; @@ -586,27 +597,6 @@ static void event_note_child_started(int slot, pid_t pid) retained->my_generation, slot, MPM_CHILD_STARTED); } -static void event_note_child_lost_slot(int slot, pid_t newpid) -{ - ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ap_server_conf, APLOGNO(00458) - "pid %" APR_PID_T_FMT " taking over scoreboard slot from " - "%" APR_PID_T_FMT "%s", - newpid, - ap_scoreboard_image->parent[slot].pid, - ap_scoreboard_image->parent[slot].quiescing ? - " (quiescing)" : ""); - ap_run_child_status(ap_server_conf, - ap_scoreboard_image->parent[slot].pid, - ap_scoreboard_image->parent[slot].generation, - slot, MPM_CHILD_LOST_SLOT); - /* Don't forget about this exiting child process, or we - * won't be able to kill it if it doesn't exit by the - * time the server is shut down. - */ - ap_register_extra_mpm_process(ap_scoreboard_image->parent[slot].pid, - ap_scoreboard_image->parent[slot].generation); -} - static const char *event_get_name(void) { return "event"; @@ -2150,7 +2140,7 @@ static void *APR_THREAD_FUNC start_threads(apr_thread_t * thd, void *dummy) int status = ap_scoreboard_image->servers[my_child_num][i].status; - if (status != SERVER_GRACEFUL && status != SERVER_DEAD) { + if (status != SERVER_DEAD) { continue; } @@ -2457,6 +2447,15 @@ static int make_child(server_rec * s, int slot, int bucket) retained->max_daemons_limit = slot + 1; } + if (ap_scoreboard_image->parent[slot].pid != 0) { + /* XXX replace with assert or remove ? */ + ap_log_error(APLOG_MARK, APLOG_ERR, 0, ap_server_conf, APLOGNO(03455) + "BUG: Scoreboard slot %d should be empty but is " + "in use by pid %" APR_PID_T_FMT, + slot, ap_scoreboard_image->parent[slot].pid); + return -1; + } + if (one_process) { my_bucket = &all_buckets[0]; @@ -2510,17 +2509,12 @@ static int make_child(server_rec * s, int slot, int bucket) return -1; } - if (ap_scoreboard_image->parent[slot].pid != 0) { - /* This new child process is squatting on the scoreboard - * entry owned by an exiting child process, which cannot - * exit until all active requests complete. - */ - event_note_child_lost_slot(slot, pid); - } ap_scoreboard_image->parent[slot].quiescing = 0; ap_scoreboard_image->parent[slot].not_accepting = 0; ap_scoreboard_image->parent[slot].bucket = bucket; event_note_child_started(slot, pid); + active_daemons++; + retained->total_daemons++; return 0; } @@ -2529,7 +2523,7 @@ static void startup_children(int number_to_start) { int i; - for (i = 0; number_to_start && i < ap_daemons_limit; ++i) { + for (i = 0; number_to_start && i < server_limit; ++i) { if (ap_scoreboard_image->parent[i].pid != 0) { continue; } @@ -2543,34 +2537,22 @@ static void startup_children(int number_to_start) static void perform_idle_server_maintenance(int child_bucket, int num_buckets) { int i, j; - int idle_thread_count; + int idle_thread_count = 0; worker_score *ws; process_score *ps; - int free_length; - int totally_free_length = 0; + int free_length = 0; int free_slots[MAX_SPAWN_RATE]; - int last_non_dead; - int total_non_dead; + int last_non_dead = -1; int active_thread_count = 0; - /* initialize the free_list */ - free_length = 0; - - idle_thread_count = 0; - last_non_dead = -1; - total_non_dead = 0; - - for (i = 0; i < ap_daemons_limit; ++i) { + for (i = 0; i < server_limit; ++i) { /* Initialization to satisfy the compiler. It doesn't know * that threads_per_child is always > 0 */ int status = SERVER_DEAD; - int any_dying_threads = 0; - int any_dead_threads = 0; - int all_dead_threads = 1; int child_threads_active = 0; if (i >= retained->max_daemons_limit && - totally_free_length == retained->idle_spawn_rate[child_bucket]) { + free_length == retained->idle_spawn_rate[child_bucket]) { /* short cut if all active processes have been examined and * enough empty scoreboard slots have been found */ @@ -2578,25 +2560,17 @@ static void perform_idle_server_maintenance(int child_bucket, int num_buckets) break; } ps = &ap_scoreboard_image->parent[i]; - for (j = 0; j < threads_per_child; j++) { - ws = &ap_scoreboard_image->servers[i][j]; - status = ws->status; - - /* XXX any_dying_threads is probably no longer needed GLA */ - any_dying_threads = any_dying_threads || - (status == SERVER_GRACEFUL); - any_dead_threads = any_dead_threads || (status == SERVER_DEAD); - all_dead_threads = all_dead_threads && - (status == SERVER_DEAD || status == SERVER_GRACEFUL); - - /* We consider a starting server as idle because we started it - * at least a cycle ago, and if it still hasn't finished starting - * then we're just going to swamp things worse by forking more. - * So we hopefully won't need to fork more if we count it. - * This depends on the ordering of SERVER_READY and SERVER_STARTING. - */ - if (ps->pid != 0) { /* XXX just set all_dead_threads in outer - for loop if no pid? not much else matters */ + if (ps->pid != 0) { + for (j = 0; j < threads_per_child; j++) { + ws = &ap_scoreboard_image->servers[i][j]; + status = ws->status; + + /* We consider a starting server as idle because we started it + * at least a cycle ago, and if it still hasn't finished starting + * then we're just going to swamp things worse by forking more. + * So we hopefully won't need to fork more if we count it. + * This depends on the ordering of SERVER_READY and SERVER_STARTING. + */ if (status <= SERVER_READY && !ps->quiescing && !ps->not_accepting && ps->generation == retained->my_generation && ps->bucket == child_bucket) @@ -2607,39 +2581,13 @@ static void perform_idle_server_maintenance(int child_bucket, int num_buckets) ++child_threads_active; } } + last_non_dead = i; } active_thread_count += child_threads_active; - if (any_dead_threads - && totally_free_length < retained->idle_spawn_rate[child_bucket] - && free_length < MAX_SPAWN_RATE / num_buckets - && (!ps->pid /* no process in the slot */ - || ps->quiescing)) { /* or at least one is going away */ - if (all_dead_threads) { - /* great! we prefer these, because the new process can - * start more threads sooner. So prioritize this slot - * by putting it ahead of any slots with active threads. - * - * first, make room by moving a slot that's potentially still - * in use to the end of the array - */ - free_slots[free_length] = free_slots[totally_free_length]; - free_slots[totally_free_length++] = i; - } - else { - /* slot is still in use - back of the bus - */ - free_slots[free_length] = i; - } - ++free_length; - } - else if (child_threads_active == threads_per_child) { + if (!ps->pid && free_length < retained->idle_spawn_rate[child_bucket]) + free_slots[free_length++] = i; + else if (child_threads_active == threads_per_child) had_healthy_child = 1; - } - /* XXX if (!ps->quiescing) is probably more reliable GLA */ - if (!any_dying_threads) { - last_non_dead = i; - ++total_non_dead; - } } if (retained->sick_child_detected) { @@ -2667,32 +2615,56 @@ static void perform_idle_server_maintenance(int child_bucket, int num_buckets) retained->max_daemons_limit = last_non_dead + 1; - if (idle_thread_count > max_spare_threads / num_buckets) { - /* Kill off one child */ - ap_mpm_podx_signal(all_buckets[child_bucket].pod, - AP_MPM_PODX_GRACEFUL); - retained->idle_spawn_rate[child_bucket] = 1; + if (idle_thread_count > max_spare_threads / num_buckets) + { + /* + * Child processes that we ask to shut down won't die immediately + * but may stay around for a long time when they finish their + * requests. If the server load changes many times, many such + * gracefully finishing processes may accumulate, filling up the + * scoreboard. To avoid running out of scoreboard entries, we + * don't shut down more processes when the total number of processes + * is high. + * + * XXX It would be nice if we could + * XXX - kill processes without keepalive connections first + * XXX - tell children to stop accepting new connections, and + * XXX depending on server load, later be able to resurrect them + * or kill them + */ + if (retained->total_daemons <= active_daemons_limit && + retained->total_daemons < server_limit) { + /* Kill off one child */ + ap_mpm_podx_signal(all_buckets[child_bucket].pod, + AP_MPM_PODX_GRACEFUL); + retained->idle_spawn_rate[child_bucket] = 1; + active_daemons--; + } else { + ap_log_error(APLOG_MARK, APLOG_TRACE5, 0, ap_server_conf, + "Not shutting down child: total daemons %d / " + "active limit %d / ServerLimit %d", + retained->total_daemons, active_daemons_limit, + server_limit); + } } else if (idle_thread_count < min_spare_threads / num_buckets) { - /* terminate the free list */ - if (free_length == 0) { /* scoreboard is full, can't fork */ - - if (active_thread_count >= ap_daemons_limit * threads_per_child) { - if (!retained->maxclients_reported) { - /* only report this condition once */ - ap_log_error(APLOG_MARK, APLOG_ERR, 0, ap_server_conf, APLOGNO(00484) - "server reached MaxRequestWorkers setting, " - "consider raising the MaxRequestWorkers " - "setting"); - retained->maxclients_reported = 1; - } - } - else { - ap_log_error(APLOG_MARK, APLOG_ERR, 0, ap_server_conf, APLOGNO(00485) - "scoreboard is full, not at MaxRequestWorkers"); + if (active_thread_count >= max_workers) { + if (!retained->maxclients_reported) { + /* only report this condition once */ + ap_log_error(APLOG_MARK, APLOG_ERR, 0, ap_server_conf, APLOGNO(00484) + "server reached MaxRequestWorkers setting, " + "consider raising the MaxRequestWorkers " + "setting"); + retained->maxclients_reported = 1; } retained->idle_spawn_rate[child_bucket] = 1; } + else if (free_length == 0) { /* scoreboard is full, can't fork */ + ap_log_error(APLOG_MARK, APLOG_ERR, 0, ap_server_conf, APLOGNO() + "scoreboard is full, not at MaxRequestWorkers." + "Increase ServerLimit."); + retained->idle_spawn_rate[child_bucket] = 1; + } else { if (free_length > retained->idle_spawn_rate[child_bucket]) { free_length = retained->idle_spawn_rate[child_bucket]; @@ -2703,10 +2675,17 @@ static void perform_idle_server_maintenance(int child_bucket, int num_buckets) "to increase StartServers, ThreadsPerChild " "or Min/MaxSpareThreads), " "spawning %d children, there are around %d idle " - "threads, and %d total children", free_length, - idle_thread_count, total_non_dead); + "threads, %d active children, and %d children " + "that are shutting down", free_length, + idle_thread_count, active_daemons, + retained->total_daemons); } for (i = 0; i < free_length; ++i) { + ap_log_error(APLOG_MARK, APLOG_TRACE5, 0, ap_server_conf, + "Spawning new child: slot %d active / " + "total daemons: %d/%d", + free_slots[i], active_daemons, + retained->total_daemons); make_child(ap_server_conf, free_slots[i], child_bucket); } /* the next time around we want to spawn twice as many if this @@ -2728,7 +2707,6 @@ static void perform_idle_server_maintenance(int child_bucket, int num_buckets) static void server_main_loop(int remaining_children_to_start, int num_buckets) { - ap_generation_t old_gen; int child_slot; apr_exit_why_e exitwhy; int status, processed_status; @@ -2752,6 +2730,10 @@ static void server_main_loop(int remaining_children_to_start, int num_buckets) == retained->my_generation) { shutdown_pending = 1; child_fatal = 1; + /* + * total_daemons counting will be off now, but as we + * are shutting down, that is not an issue anymore. + */ return; } else { @@ -2778,13 +2760,16 @@ static void server_main_loop(int remaining_children_to_start, int num_buckets) event_note_child_killed(child_slot, 0, 0); ps = &ap_scoreboard_image->parent[child_slot]; + if (!ps->quiescing) + active_daemons--; ps->quiescing = 0; + /* NOTE: We don't dec in the (child_slot < 0) case! */ + retained->total_daemons--; if (processed_status == APEXIT_CHILDSICK) { /* resource shortage, minimize the fork rate */ retained->idle_spawn_rate[ps->bucket] = 1; } - else if (remaining_children_to_start - && child_slot < ap_daemons_limit) { + else if (remaining_children_to_start) { /* we're still doing a 1-for-1 replacement of dead * children with new children */ @@ -2792,24 +2777,12 @@ static void server_main_loop(int remaining_children_to_start, int num_buckets) --remaining_children_to_start; } } - else if (ap_unregister_extra_mpm_process(pid.pid, &old_gen) == 1) { - - event_note_child_killed(-1, /* already out of the scoreboard */ - pid.pid, old_gen); - if (processed_status == APEXIT_CHILDSICK - && old_gen == retained->my_generation) { - /* resource shortage, minimize the fork rate */ - for (i = 0; i < num_buckets; i++) { - retained->idle_spawn_rate[i] = 1; - } - } #if APR_HAS_OTHER_CHILD - } else if (apr_proc_other_child_alert(&pid, APR_OC_REASON_DEATH, status) == 0) { /* handled */ -#endif } +#endif else if (retained->is_graceful) { /* Great, we've probably just lost a slot in the * scoreboard. Somehow we don't know about this child. @@ -2871,8 +2844,8 @@ static int event_run(apr_pool_t * _pconf, apr_pool_t * plog, server_rec * s) /* Don't thrash since num_buckets depends on the * system and the number of online CPU cores... */ - if (ap_daemons_limit < num_buckets) - ap_daemons_limit = num_buckets; + if (active_daemons_limit < num_buckets) + active_daemons_limit = num_buckets; if (ap_daemons_to_start < num_buckets) ap_daemons_to_start = num_buckets; /* We want to create as much children at a time as the number of buckets, @@ -2896,8 +2869,8 @@ static int event_run(apr_pool_t * _pconf, apr_pool_t * plog, server_rec * s) * supposed to start up without the 1 second penalty between each fork. */ remaining_children_to_start = ap_daemons_to_start; - if (remaining_children_to_start > ap_daemons_limit) { - remaining_children_to_start = ap_daemons_limit; + if (remaining_children_to_start > active_daemons_limit) { + remaining_children_to_start = active_daemons_limit; } if (!retained->is_graceful) { startup_children(remaining_children_to_start); @@ -2927,7 +2900,7 @@ static int event_run(apr_pool_t * _pconf, apr_pool_t * plog, server_rec * s) * Kill child processes, tell them to call child_exit, etc... */ for (i = 0; i < num_buckets; i++) { - ap_mpm_podx_killpg(all_buckets[i].pod, ap_daemons_limit, + ap_mpm_podx_killpg(all_buckets[i].pod, active_daemons_limit, AP_MPM_PODX_RESTART); } ap_reclaim_child_processes(1, /* Start with SIGTERM */ @@ -2951,7 +2924,7 @@ static int event_run(apr_pool_t * _pconf, apr_pool_t * plog, server_rec * s) /* Close our listeners, and then ask our children to do same */ ap_close_listeners(); for (i = 0; i < num_buckets; i++) { - ap_mpm_podx_killpg(all_buckets[i].pod, ap_daemons_limit, + ap_mpm_podx_killpg(all_buckets[i].pod, active_daemons_limit, AP_MPM_PODX_GRACEFUL); } ap_relieve_child_processes(event_note_child_killed); @@ -2979,7 +2952,7 @@ static int event_run(apr_pool_t * _pconf, apr_pool_t * plog, server_rec * s) ap_relieve_child_processes(event_note_child_killed); active_children = 0; - for (index = 0; index < ap_daemons_limit; ++index) { + for (index = 0; index < retained->max_daemons_limit; ++index) { if (ap_mpm_safe_kill(MPM_CHILD_PID(index), 0) == APR_SUCCESS) { active_children = 1; /* Having just one child is enough to stay around */ @@ -2994,7 +2967,7 @@ static int event_run(apr_pool_t * _pconf, apr_pool_t * plog, server_rec * s) * really dead. */ for (i = 0; i < num_buckets; i++) { - ap_mpm_podx_killpg(all_buckets[i].pod, ap_daemons_limit, + ap_mpm_podx_killpg(all_buckets[i].pod, active_daemons_limit, AP_MPM_PODX_RESTART); } ap_reclaim_child_processes(1, event_note_child_killed); @@ -3023,7 +2996,7 @@ static int event_run(apr_pool_t * _pconf, apr_pool_t * plog, server_rec * s) " received. Doing graceful restart"); /* wake up the children...time to die. But we'll have more soon */ for (i = 0; i < num_buckets; i++) { - ap_mpm_podx_killpg(all_buckets[i].pod, ap_daemons_limit, + ap_mpm_podx_killpg(all_buckets[i].pod, active_daemons_limit, AP_MPM_PODX_GRACEFUL); } @@ -3038,7 +3011,7 @@ static int event_run(apr_pool_t * _pconf, apr_pool_t * plog, server_rec * s) * pthreads are stealing signals from us left and right. */ for (i = 0; i < num_buckets; i++) { - ap_mpm_podx_killpg(all_buckets[i].pod, ap_daemons_limit, + ap_mpm_podx_killpg(all_buckets[i].pod, active_daemons_limit, AP_MPM_PODX_RESTART); } @@ -3048,6 +3021,8 @@ static int event_run(apr_pool_t * _pconf, apr_pool_t * plog, server_rec * s) "SIGHUP received. Attempting to restart"); } + active_daemons = 0; + return OK; } @@ -3261,9 +3236,9 @@ static int event_pre_config(apr_pool_t * pconf, apr_pool_t * plog, max_spare_threads = DEFAULT_MAX_FREE_DAEMON * DEFAULT_THREADS_PER_CHILD; server_limit = DEFAULT_SERVER_LIMIT; thread_limit = DEFAULT_THREAD_LIMIT; - ap_daemons_limit = server_limit; + active_daemons_limit = server_limit; threads_per_child = DEFAULT_THREADS_PER_CHILD; - max_workers = ap_daemons_limit * threads_per_child; + max_workers = active_daemons_limit * threads_per_child; had_healthy_child = 0; ap_extended_status = 0; @@ -3472,10 +3447,10 @@ static int event_check_config(apr_pool_t *p, apr_pool_t *plog, max_workers = threads_per_child; } - ap_daemons_limit = max_workers / threads_per_child; + active_daemons_limit = max_workers / threads_per_child; if (max_workers % threads_per_child) { - int tmp_max_workers = ap_daemons_limit * threads_per_child; + int tmp_max_workers = active_daemons_limit * threads_per_child; if (startup) { ap_log_error(APLOG_MARK, APLOG_WARNING | APLOG_STARTUP, 0, NULL, APLOGNO(00513) @@ -3483,7 +3458,7 @@ static int event_check_config(apr_pool_t *p, apr_pool_t *plog, "multiple of ThreadsPerChild of %d, decreasing to nearest " "multiple %d, for a maximum of %d servers.", max_workers, threads_per_child, tmp_max_workers, - ap_daemons_limit); + active_daemons_limit); } else { ap_log_error(APLOG_MARK, APLOG_WARNING, 0, s, APLOGNO(00514) "MaxRequestWorkers of %d is not an integer multiple " @@ -3494,25 +3469,25 @@ static int event_check_config(apr_pool_t *p, apr_pool_t *plog, max_workers = tmp_max_workers; } - if (ap_daemons_limit > server_limit) { + if (active_daemons_limit > server_limit) { if (startup) { ap_log_error(APLOG_MARK, APLOG_WARNING | APLOG_STARTUP, 0, NULL, APLOGNO(00515) "WARNING: MaxRequestWorkers of %d would require %d servers " "and would exceed ServerLimit of %d, decreasing to %d. " "To increase, please see the ServerLimit directive.", - max_workers, ap_daemons_limit, server_limit, + max_workers, active_daemons_limit, server_limit, server_limit * threads_per_child); } else { ap_log_error(APLOG_MARK, APLOG_WARNING, 0, s, APLOGNO(00516) "MaxRequestWorkers of %d would require %d servers and " "exceed ServerLimit of %d, decreasing to %d", - max_workers, ap_daemons_limit, server_limit, + max_workers, active_daemons_limit, server_limit, server_limit * threads_per_child); } - ap_daemons_limit = server_limit; + active_daemons_limit = server_limit; } - /* ap_daemons_to_start > ap_daemons_limit checked in ap_mpm_run() */ + /* ap_daemons_to_start > active_daemons_limit checked in ap_mpm_run() */ if (ap_daemons_to_start < 1) { if (startup) { ap_log_error(APLOG_MARK, APLOG_WARNING | APLOG_STARTUP, 0, NULL, APLOGNO(00517) diff --git a/server/scoreboard.c b/server/scoreboard.c index 8e3403f735..d83a8492c3 100644 --- a/server/scoreboard.c +++ b/server/scoreboard.c @@ -399,7 +399,7 @@ AP_DECLARE(int) ap_find_child_by_pid(apr_proc_t *pid) int i; int max_daemons_limit = 0; - ap_mpm_query(AP_MPMQ_MAX_DAEMONS, &max_daemons_limit); + ap_mpm_query(AP_MPMQ_MAX_DAEMON_USED, &max_daemons_limit); for (i = 0; i < max_daemons_limit; ++i) { if (ap_scoreboard_image->parent[i].pid == pid->pid) { -- GitLab From 86db1247c70699df6acad75f2491b8baa0030ff6 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 2 Dec 2016 11:46:50 +0000 Subject: [PATCH 026/224] Merge r1770771 from trunk: Describe new behavior of ServerLimit This has changed a bit after the fix for PR 53555. Better wording is welcome. Submitted by: sf Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1772336 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/mpm_common.xml | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/docs/manual/mod/mpm_common.xml b/docs/manual/mod/mpm_common.xml index 08e7def271..1da81bcd5e 100644 --- a/docs/manual/mod/mpm_common.xml +++ b/docs/manual/mod/mpm_common.xml @@ -617,10 +617,12 @@ Apache HTTP Server module="mpm_common">ThreadLimit sets the maximum configured value for MaxRequestWorkers for the lifetime of the - Apache httpd process. Any attempts to change this directive during a - restart will be ignored, but MaxRequestWorkers can be modified during - a restart.

    + Apache httpd process. For the event MPM, this directive + also defines how many old server processes may keep running and finish processing + open connections. + Any attempts to change this directive during a restart will be ignored, but + MaxRequestWorkers can be modified + during a restart.

    Special care must be taken when using this directive. If ServerLimit is set to a value much higher @@ -637,8 +639,8 @@ Apache HTTP Server might want to set MaxRequestWorkers to.

    -

    With worker and event, use this - directive only if your MaxRequestWorkers +

    With worker, use this directive only if your + MaxRequestWorkers and ThreadsPerChild settings require more than 16 server processes (default). Do not set the value of this directive any higher than the number of server @@ -646,6 +648,13 @@ Apache HTTP Server module="mpm_common">MaxRequestWorkers and ThreadsPerChild.

    +

    With event, increase this directive if the process + number defined by your MaxRequestWorkers and ThreadsPerChild settings, plus the + number of gracefully shutting down processes, is more than 16 server + processes (default).

    + Note

    There is a hard limit of ServerLimit 20000 compiled into the server (for the prefork MPM 200000). This is -- GitLab From 413df2db9c5472609942db982cdba8ba6024b7fc Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 2 Dec 2016 11:56:36 +0000 Subject: [PATCH 027/224] silence warning. No functional change git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1772337 13f79535-47bb-0310-9956-ffa450edef68 --- server/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/core.c b/server/core.c index 2c64fdc4d2..120c9bd034 100644 --- a/server/core.c +++ b/server/core.c @@ -2340,7 +2340,7 @@ static const char *dirsection(cmd_parms *cmd, void *mconfig, const char *arg) return "Regex could not be compiled"; } } - else if (!strcmp(cmd->path, "/") == 0) + else if (strcmp(cmd->path, "/") != 0) { char *newpath; -- GitLab From 772f38180979b32e6d7f1a29088c7444b1f87fca Mon Sep 17 00:00:00 2001 From: "William A. Rowe Jr" Date: Fri, 2 Dec 2016 20:31:07 +0000 Subject: [PATCH 028/224] Add testing hint git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1772404 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/STATUS b/STATUS index 517baab617..03ca6150bf 100644 --- a/STATUS +++ b/STATUS @@ -147,6 +147,8 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: see svn diff -r1767912:HEAD http://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x-merge-http-strict/ Last updated: 1 Dec with a missing element of http_filters.c + When testing, revert; + http://svn.apache.org/r1772339 +1: wrowe *) mod_ratelimit: Allow for initial burst of data before we start -- GitLab From 9caf451f85e287223abec1de7160cbd0be03f2c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Malo?= Date: Sat, 3 Dec 2016 19:32:38 +0000 Subject: [PATCH 029/224] update transformation git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1772481 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/mpm_common.html.en | 18 +++++++++++++----- docs/manual/mod/mpm_common.html.fr | 2 ++ docs/manual/mod/mpm_common.html.tr.utf8 | 1 + docs/manual/mod/mpm_common.xml.de | 2 +- docs/manual/mod/mpm_common.xml.fr | 2 +- docs/manual/mod/mpm_common.xml.ja | 2 +- docs/manual/mod/mpm_common.xml.meta | 4 ++-- docs/manual/mod/mpm_common.xml.tr | 2 +- 8 files changed, 22 insertions(+), 11 deletions(-) diff --git a/docs/manual/mod/mpm_common.html.en b/docs/manual/mod/mpm_common.html.en index 9c7ecaed89..a9ce504dbf 100644 --- a/docs/manual/mod/mpm_common.html.en +++ b/docs/manual/mod/mpm_common.html.en @@ -605,9 +605,12 @@ Apache HTTP Server Apache httpd process. For the worker and event MPMs, this directive in combination with ThreadLimit sets the maximum configured value for MaxRequestWorkers for the lifetime of the - Apache httpd process. Any attempts to change this directive during a - restart will be ignored, but MaxRequestWorkers can be modified during - a restart.

    + Apache httpd process. For the event MPM, this directive + also defines how many old server processes may keep running and finish processing + open connections. + Any attempts to change this directive during a restart will be ignored, but + MaxRequestWorkers can be modified + during a restart.

    Special care must be taken when using this directive. If ServerLimit is set to a value much higher @@ -621,13 +624,18 @@ Apache HTTP Server Do not set the value of this directive any higher than what you might want to set MaxRequestWorkers to.

    -

    With worker and event, use this - directive only if your MaxRequestWorkers +

    With worker, use this directive only if your + MaxRequestWorkers and ThreadsPerChild settings require more than 16 server processes (default). Do not set the value of this directive any higher than the number of server processes required by what you may want for MaxRequestWorkers and ThreadsPerChild.

    +

    With event, increase this directive if the process + number defined by your MaxRequestWorkers and ThreadsPerChild settings, plus the + number of gracefully shutting down processes, is more than 16 server + processes (default).

    +

    Note

    There is a hard limit of ServerLimit 20000 compiled into the server (for the prefork MPM 200000). This is diff --git a/docs/manual/mod/mpm_common.html.fr b/docs/manual/mod/mpm_common.html.fr index a76103e2c4..74e1c7f619 100644 --- a/docs/manual/mod/mpm_common.html.fr +++ b/docs/manual/mod/mpm_common.html.fr @@ -32,6 +32,8 @@  ja  |  tr 

    +
    Cette traduction peut tre prime. Vrifiez la version + anglaise pour les changements rcents.
    Description:Une srie de directives implmentes par plusieurs modules multi-processus (MPM)
    Statut:MPM
    diff --git a/docs/manual/mod/mpm_common.html.tr.utf8 b/docs/manual/mod/mpm_common.html.tr.utf8 index 4ce352d5c5..bb7a4444c9 100644 --- a/docs/manual/mod/mpm_common.html.tr.utf8 +++ b/docs/manual/mod/mpm_common.html.tr.utf8 @@ -32,6 +32,7 @@  ja  |  tr 

    +
    Bu çeviri güncel olmayabilir. Son değişiklikler için İngilizce sürüm geçerlidir.
    Açıklama:Birden fazla Çok Süreçlilik Modülü (MPM) tarafından gerçeklenmiş yönergeler bütünü.
    Durum:MPM
    diff --git a/docs/manual/mod/mpm_common.xml.de b/docs/manual/mod/mpm_common.xml.de index de5e4ad23b..5dd532e166 100644 --- a/docs/manual/mod/mpm_common.xml.de +++ b/docs/manual/mod/mpm_common.xml.de @@ -1,7 +1,7 @@ - + + diff --git a/docs/manual/mod/mpm_common.xml.ja b/docs/manual/mod/mpm_common.xml.ja index b37d2cfb93..779c540354 100644 --- a/docs/manual/mod/mpm_common.xml.ja +++ b/docs/manual/mod/mpm_common.xml.ja @@ -1,7 +1,7 @@ - + + + diff --git a/docs/manual/howto/cgi.xml.ja b/docs/manual/howto/cgi.xml.ja index 8a350f5b11..032c8b2a16 100644 --- a/docs/manual/howto/cgi.xml.ja +++ b/docs/manual/howto/cgi.xml.ja @@ -1,7 +1,7 @@ - + + + + + diff --git a/docs/manual/mod/core.xml.ja b/docs/manual/mod/core.xml.ja index ee25de7bc8..cb18f69809 100644 --- a/docs/manual/mod/core.xml.ja +++ b/docs/manual/mod/core.xml.ja @@ -1,7 +1,7 @@ - + + - + + diff --git a/docs/manual/mod/mod_proxy_express.xml.meta b/docs/manual/mod/mod_proxy_express.xml.meta index 4fda85c3b0..388a98eecd 100644 --- a/docs/manual/mod/mod_proxy_express.xml.meta +++ b/docs/manual/mod/mod_proxy_express.xml.meta @@ -8,6 +8,6 @@ en - fr + fr -- GitLab From 147550f23fa5d3ca970d49c23a06901d5bccdb2e Mon Sep 17 00:00:00 2001 From: "William A. Rowe Jr" Date: Tue, 13 Dec 2016 17:21:30 +0000 Subject: [PATCH 084/224] Document CHANGES git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774065 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 388c6d1abd..6f6b7cb4de 100644 --- a/CHANGES +++ b/CHANGES @@ -22,6 +22,17 @@ Changes with Apache 2.4.24 MAC (SipHash) to prevent deciphering or tampering with a padding oracle attack. [Yann Ylavic, Colm MacCarthaigh] + *) SECURITY: CVE-2016-8743 (cve.mitre.org) + Enforce HTTP request grammar corresponding to RFC7230 for request lines + and request headers, to prevent response splitting and cache pollution by + malicious clients or downstream proxies. [William Rowe, Stefan Fritsch] + + *) Validate HTTP response header grammar defined by RFC7230, resulting + in a 500 error in the event that invalid response header contents are + detected when serving the response, to avoid response splitting and cache + pollution by malicious clients, upstream servers or faulty modules. + [Stefan Fritsch, Eric Covener, Yann Ylavic] + *) mod_socache_memcache: Provide memcache stats to mod_status. [Jim Jagielski] @@ -40,9 +51,6 @@ Changes with Apache 2.4.24 'parent-first' instead of 'none', as per documentation. PR 60419 [Christophe Jaillet] - *) Enforce http request grammer corresponding to RFC7230 for request lines - and request headers [William Rowe, Stefan Fritsch] - *) core: New directive HttpProtocolOptions to control httpd enforcement of various RFC7230 requirements. [Stefan Fritsch, William Rowe] -- GitLab From 8ffa177e1196fdc1ad920066d48b228d2ec65cf3 Mon Sep 17 00:00:00 2001 From: Luca Toscano Date: Tue, 13 Dec 2016 17:41:59 +0000 Subject: [PATCH 085/224] Vote + Promote git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774066 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/STATUS b/STATUS index 76ae965979..ec300833f4 100644 --- a/STATUS +++ b/STATUS @@ -119,6 +119,17 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] + *) mod_ratelimit: Allow for initial burst of data before we start + throttling: PR 60145 + trunk patches: + https://svn.apache.org/r1770951 + https://svn.apache.org/r1774008 + 2.4.x patch: trunk works modulo CHANGES and next-number + +1: jim, ylavic, elukey + jailletc36: compatibility note missing in the XML file + jim: Will address during commit + elukey: the maximum value limitation for the new burst feature needs + to be documented. PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] @@ -135,16 +146,6 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: http://home.apache.org/~ylavic/patches/httpd-2.4.x-r1740928_and_co.patch +1: ylavic - *) mod_ratelimit: Allow for initial burst of data before we start - throttling: PR 60145 - trunk patches: - https://svn.apache.org/r1770951 - https://svn.apache.org/r1774008 - 2.4.x patch: trunk works modulo CHANGES and next-number - +1: jim, ylavic - jailletc36: compatibility note missing in the XML file - jim: Will address during commit - PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From 4eb2b23990c2b14902754b77ee33ee6a1b5d6f10 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Tue, 13 Dec 2016 17:57:58 +0000 Subject: [PATCH 086/224] Merge r1770951, r1774008, r1774068, r1774069 from trunk: Allow for initual burst at full speed Some "error" reporting if we overflow rate limit notes xhtml Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774071 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 4 +++ STATUS | 13 +------ docs/manual/mod/mod_ratelimit.xml | 13 +++++++ modules/filters/mod_ratelimit.c | 56 +++++++++++++++++++++++++++---- 4 files changed, 68 insertions(+), 18 deletions(-) diff --git a/CHANGES b/CHANGES index 6f6b7cb4de..964c51c55a 100644 --- a/CHANGES +++ b/CHANGES @@ -33,6 +33,10 @@ Changes with Apache 2.4.24 pollution by malicious clients, upstream servers or faulty modules. [Stefan Fritsch, Eric Covener, Yann Ylavic] + *) mod_ratelimit: Allow for initial "burst" amount at full speed before + throttling: PR 60145 [Andy Valencia , + Jim Jagielski] + *) mod_socache_memcache: Provide memcache stats to mod_status. [Jim Jagielski] diff --git a/STATUS b/STATUS index ec300833f4..8eb246768c 100644 --- a/STATUS +++ b/STATUS @@ -34,7 +34,7 @@ Release history: [NOTE that x.{odd}.z versions are strictly Alpha/Beta releases, while x.{even}.z versions are Stable/GA releases.] - 2.4.24 : In development. + 2.4.24 : In development. Jim proposes to T&R ~ Dec 15th. 2.4.23 : Tagged on June 30, 2016. Released on July 05, 2016. 2.4.22 : Tagged on June 20, 2016, not released. 2.4.21 : Tagged on June 16, 2016, not released. @@ -119,17 +119,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) mod_ratelimit: Allow for initial burst of data before we start - throttling: PR 60145 - trunk patches: - https://svn.apache.org/r1770951 - https://svn.apache.org/r1774008 - 2.4.x patch: trunk works modulo CHANGES and next-number - +1: jim, ylavic, elukey - jailletc36: compatibility note missing in the XML file - jim: Will address during commit - elukey: the maximum value limitation for the new burst feature needs - to be documented. PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] diff --git a/docs/manual/mod/mod_ratelimit.xml b/docs/manual/mod/mod_ratelimit.xml index 5cac06cbf8..973b8e1f0f 100644 --- a/docs/manual/mod/mod_ratelimit.xml +++ b/docs/manual/mod/mod_ratelimit.xml @@ -30,6 +30,7 @@ the document to validate. --> Extension mod_ratelimit.c ratelimit_module +rate-initial-burst available in httpd 2.4.24 and later. @@ -37,13 +38,25 @@ the document to validate. --> The connection speed to be simulated is specified, in KiB/s, using the environment variable rate-limit.

    +

    Optionally, an initial amount of burst data, in KiB, may be +configured to be passed at full speed before throttling to the +specified rate limit. This value is optional, and is set using +the environment variable rate-initial-burst.

    + Example Configuration <Location "/downloads"> SetOutputFilter RATE_LIMIT SetEnv rate-limit 400 + SetEnv rate-initial-burst 512 </Location> + + +If the value specified for rate-limit causes integer overflow, the rate-limited will be disabled. +If the value specified for rate-limit-burst causes integer overflow, the burst will be disabled. + +
    diff --git a/modules/filters/mod_ratelimit.c b/modules/filters/mod_ratelimit.c index a2e9bd0197..64283c76c3 100644 --- a/modules/filters/mod_ratelimit.c +++ b/modules/filters/mod_ratelimit.c @@ -35,12 +35,13 @@ typedef struct rl_ctx_t { int speed; int chunk_size; + int burst; rl_state_e state; apr_bucket_brigade *tmpbb; apr_bucket_brigade *holdingbb; } rl_ctx_t; -#if 0 +#if defined(RLFDEBUG) static void brigade_dump(request_rec *r, apr_bucket_brigade *bb) { apr_bucket *e; @@ -53,7 +54,7 @@ static void brigade_dump(request_rec *r, apr_bucket_brigade *bb) } } -#endif +#endif /* RLFDEBUG */ static apr_status_t rate_limit_filter(ap_filter_t *f, apr_bucket_brigade *input_bb) @@ -71,10 +72,12 @@ rate_limit_filter(ap_filter_t *f, apr_bucket_brigade *input_bb) return APR_ECONNABORTED; } + /* Set up our rl_ctx_t on first use */ if (ctx == NULL) { const char *rl = NULL; int ratelimit; + int burst = 0; /* no subrequests. */ if (f->r->main != NULL) { @@ -82,6 +85,7 @@ rate_limit_filter(ap_filter_t *f, apr_bucket_brigade *input_bb) return ap_pass_brigade(f->next, bb); } + /* Configuration: rate limit */ rl = apr_table_get(f->r->subprocess_env, "rate-limit"); if (rl == NULL) { @@ -93,15 +97,29 @@ rate_limit_filter(ap_filter_t *f, apr_bucket_brigade *input_bb) ratelimit = atoi(rl) * 1024; if (ratelimit <= 0) { /* remove ourselves */ + ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, f->r, + APLOGNO(03488) "rl: disabling: rate-limit = %s (too high?)", rl); ap_remove_output_filter(f); return ap_pass_brigade(f->next, bb); } - /* first run, init stuff */ + /* Configuration: optional initial burst */ + rl = apr_table_get(f->r->subprocess_env, "rate-initial-burst"); + if (rl != NULL) { + burst = atoi(rl) * 1024; + if (burst <= 0) { + ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, f->r, + APLOGNO(03489) "rl: disabling burst: rate-initial-burst = %s (too high?)", rl); + burst = 0; + } + } + + /* Set up our context */ ctx = apr_palloc(f->r->pool, sizeof(rl_ctx_t)); f->ctx = ctx; ctx->state = RATE_LIMIT; ctx->speed = ratelimit; + ctx->burst = burst; /* calculate how many bytes / interval we want to send */ /* speed is bytes / second, so, how many (speed / 1000 % interval) */ @@ -183,7 +201,15 @@ rate_limit_filter(ap_filter_t *f, apr_bucket_brigade *input_bb) apr_brigade_length(bb, 1, &len); - rv = apr_brigade_partition(bb, ctx->chunk_size, &stop_point); + /* + * Pull next chunk of data; the initial amount is our + * burst allotment (if any) plus a chunk. All subsequent + * iterations are just chunks with whatever remaining + * burst amounts we have left (in case not done in the + * first bucket). + */ + rv = apr_brigade_partition(bb, + ctx->chunk_size + ctx->burst, &stop_point); if (rv != APR_SUCCESS && rv != APR_INCOMPLETE) { ctx->state = RATE_ERROR; ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, f->r, APLOGNO(01456) @@ -207,15 +233,33 @@ rate_limit_filter(ap_filter_t *f, apr_bucket_brigade *input_bb) APR_BRIGADE_INSERT_TAIL(ctx->tmpbb, fb); -#if 0 + /* + * Adjust the burst amount depending on how much + * we've done up to now. + */ + if (ctx->burst) { + len = ctx->burst; + apr_brigade_length(ctx->tmpbb, 1, &len); + ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, f->r, + APLOGNO(03485) "rl: burst %d; len %"APR_OFF_T_FMT, ctx->burst, len); + if (len < ctx->burst) { + ctx->burst -= len; + } + else { + ctx->burst = 0; + } + } + +#if defined(RLFDEBUG) brigade_dump(f->r, ctx->tmpbb); brigade_dump(f->r, bb); -#endif +#endif /* RLFDEBUG */ rv = ap_pass_brigade(f->next, ctx->tmpbb); apr_brigade_cleanup(ctx->tmpbb); if (rv != APR_SUCCESS) { + /* Most often, user disconnects from stream */ ctx->state = RATE_ERROR; ap_log_rerror(APLOG_MARK, APLOG_TRACE1, rv, f->r, APLOGNO(01457) "rl: brigade pass failed."); -- GitLab From 764b947ef8546b5d5aa7570fcec2a85546c152b0 Mon Sep 17 00:00:00 2001 From: Nilgun Belma Buguner Date: Wed, 14 Dec 2016 12:49:41 +0000 Subject: [PATCH 087/224] update for sync with English docs. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Translated by: Nilgün Belma Bugüner Reviewed by: Orhan Berent git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774204 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/caching.xml.tr | 67 ++++++++++++++- docs/manual/install.xml.tr | 7 +- docs/manual/mod/core.xml.tr | 134 ++++++++++++++++++++++++++---- docs/manual/mod/mod_alias.xml.tr | 2 +- docs/manual/mod/mpm_common.xml.tr | 17 ++-- 5 files changed, 203 insertions(+), 24 deletions(-) diff --git a/docs/manual/caching.xml.tr b/docs/manual/caching.xml.tr index e3e281d4b9..a3b3871c3d 100644 --- a/docs/manual/caching.xml.tr +++ b/docs/manual/caching.xml.tr @@ -1,7 +1,7 @@ - + + + + + + diff --git a/docs/manual/mod/mod_ratelimit.xml.meta b/docs/manual/mod/mod_ratelimit.xml.meta index 9cd2c2d9d2..c44ea5cee2 100644 --- a/docs/manual/mod/mod_ratelimit.xml.meta +++ b/docs/manual/mod/mod_ratelimit.xml.meta @@ -8,6 +8,6 @@ en - fr + fr diff --git a/docs/manual/mod/mpm_common.html.tr.utf8 b/docs/manual/mod/mpm_common.html.tr.utf8 index bb7a4444c9..8c34b68364 100644 --- a/docs/manual/mod/mpm_common.html.tr.utf8 +++ b/docs/manual/mod/mpm_common.html.tr.utf8 @@ -32,7 +32,6 @@  ja  |  tr 

    -
    Bu çeviri güncel olmayabilir. Son değişiklikler için İngilizce sürüm geçerlidir.
    Açıklama:Birden fazla Çok Süreçlilik Modülü (MPM) tarafından gerçeklenmiş yönergeler bütünü.
    Durum:MPM
    @@ -616,7 +615,9 @@ açıklaması azami değeri belirler. worker ve event modülü sözkonusu olduğunda ise, Apache httpd sürecinin ömrü boyunca MaxRequestWorkers yönergesine - atanabilecek azami değeri ThreadLimit ile birlikte belirler. Bu yönergeyi bir yeniden + atanabilecek azami değeri ThreadLimit ile birlikte belirler. event modülü + için bu yönerge kaç eski sunucunun çalışmayı sürdüreceğini ve kaçının açık + bağlantıları işlemeyi bitireceğini belirler. Bu yönergeyi bir yeniden başlatma sırasında değiştirirseniz bu değişiklik yok sayılır fakat MaxRequestWorkers değişiklikleri dikkate alınır.

    @@ -633,15 +634,18 @@ açıklaması MaxRequestWorkers için atamak istediğiniz değerden fazlasını atamayınız.

    -

    worker ve event modülü söz konusu - olduğunda bu yönergeyi +

    worker modülü söz konusu olduğunda bu yönergeyi MaxRequestWorkers ve ThreadsPerChild ayarları 16 sunucu sürecinden (16 öntanımlıdır) fazlasını gerektiriyorsa ayarlayınız. Bu yönergeye MaxRequestWorkers ve ThreadsPerChild için gerekli gördüğünüz sunucu süreci sayısından fazlasını atamayınız.

    -

    Ek Bilgi

    +

    event modülü söz konusu olduğunda, MaxRequestWorkers ve ThreadsPerChild yönergeleri ile belirlenen + süreç sayısına ek olarak zarifçe kapatılan süreçlerin sayısıyla arttırıp 16 + sunucu sürecinden (16 öntanımlıdır) fazlasına ayarlayınız.

    + +

    Ek Bilgi

    Sunucu içinde derlenmiş olarak ServerLimit 20000 şeklinde bir zorlayıcı sınır vardır (prefork için 200000’dir). Bu önlem, yazım hatalarının istenmeyen sonuçlara yol diff --git a/docs/manual/mod/mpm_common.xml.meta b/docs/manual/mod/mpm_common.xml.meta index 24ce098ada..d35eb87434 100644 --- a/docs/manual/mod/mpm_common.xml.meta +++ b/docs/manual/mod/mpm_common.xml.meta @@ -11,6 +11,6 @@ en fr ja - tr + tr diff --git a/docs/manual/mod/quickreference.html.tr.utf8 b/docs/manual/mod/quickreference.html.tr.utf8 index 0d35402202..1e76b0c184 100644 --- a/docs/manual/mod/quickreference.html.tr.utf8 +++ b/docs/manual/mod/quickreference.html.tr.utf8 @@ -504,7 +504,7 @@ heartbeat requests to this server HostnameLookups On|Off|Double Off skdÇİstemci IP adresleri üzerinde DNS sorgularını etkin kılar. HttpProtocolOptions [Strict|Unsafe] [RegisteredMethods|LenientMethods] - [Allow0.9|Require1.0] Strict LenientMetho +skÇModify restrictions on HTTP Request Messages + [Allow0.9|Require1.0] Strict LenientMetho +skÇHTTP İstek İletilerindeki sınırlamalarda değişiklik yapar IdentityCheck On|Off Off skdEEnables logging of the RFC 1413 identity of the remote user IdentityCheckTimeout seconds 30 skdEDetermines the timeout duration for ident requests @@ -798,7 +798,7 @@ URL’ye yönlendirir. RedirectTemp URL-yolu URLskdhTİstemciyi, geçici bir yönlendirme isteği döndürerek farklı bir URL’ye yönlendirir. ReflectorHeader inputheader [outputheader]skdhTReflect an input header to the output headers -RegisterHttpMethod method [method [...]]sÇRegister non-standard HTTP methods +RegisterHttpMethod yöntem [yöntem [...]]sÇStandart olamayan HTTP yöntemlerini belirler RemoteIPHeader header-fieldskTDeclare the header field which should be parsed for useragent IP addresses RemoteIPInternalProxy proxy-ip|proxy-ip/subnet|hostname ...skTDeclare client intranet IP addresses trusted to present the RemoteIPHeader value RemoteIPInternalProxyList filenameskTDeclare client intranet IP addresses trusted to present the RemoteIPHeader value -- GitLab From d618c4818a0d3c138b79fb26eb923f5be2a4881c Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Wed, 14 Dec 2016 16:25:36 +0000 Subject: [PATCH 089/224] Propose. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774287 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/STATUS b/STATUS index 8eb246768c..59a2e53c17 100644 --- a/STATUS +++ b/STATUS @@ -135,6 +135,12 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: http://home.apache.org/~ylavic/patches/httpd-2.4.x-r1740928_and_co.patch +1: ylavic + *) Follow up on check_headers() (r1773995) to restore EOC semantic. + trunk patch: http://svn.apache.org/r1774286 + 2.4.x patch: trunk works + +1: ylavic + + PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From bdbc30d127d0180cf016a48ee503c2f1354f1a3a Mon Sep 17 00:00:00 2001 From: Eric Covener Date: Wed, 14 Dec 2016 16:28:52 +0000 Subject: [PATCH 090/224] propose git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774289 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/STATUS b/STATUS index 59a2e53c17..3740b15042 100644 --- a/STATUS +++ b/STATUS @@ -139,7 +139,11 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: trunk patch: http://svn.apache.org/r1774286 2.4.x patch: trunk works +1: ylavic - + + *) Limit some kinds of rewrite looping. PR60478 + trunk patch: http://svn.apache.org/r1774288. + 2.4.x patch: trunk works + +1: covener PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From dab94c2a01950961b3e03adc157dcc5ae586eb88 Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Wed, 14 Dec 2016 18:06:38 +0000 Subject: [PATCH 091/224] Vote. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774300 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STATUS b/STATUS index 3740b15042..1ce05ce659 100644 --- a/STATUS +++ b/STATUS @@ -143,7 +143,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: *) Limit some kinds of rewrite looping. PR60478 trunk patch: http://svn.apache.org/r1774288. 2.4.x patch: trunk works - +1: covener + +1: covener, ylavic PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From 11b11b33bab56faea131b36edc1c82a0fd9ffe8c Mon Sep 17 00:00:00 2001 From: Jacob Champion Date: Wed, 14 Dec 2016 19:36:01 +0000 Subject: [PATCH 092/224] Promote git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774327 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/STATUS b/STATUS index 1ce05ce659..c166c7816d 100644 --- a/STATUS +++ b/STATUS @@ -118,6 +118,11 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] + + *) Limit some kinds of rewrite looping. PR60478 + trunk patch: http://svn.apache.org/r1774288. + 2.4.x patch: trunk works + +1: covener, ylavic, jchampion PATCHES PROPOSED TO BACKPORT FROM TRUNK: @@ -139,11 +144,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: trunk patch: http://svn.apache.org/r1774286 2.4.x patch: trunk works +1: ylavic - - *) Limit some kinds of rewrite looping. PR60478 - trunk patch: http://svn.apache.org/r1774288. - 2.4.x patch: trunk works - +1: covener, ylavic + PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From 45b12d4de803cdfb37862f9b672fc2ea0ca5d66d Mon Sep 17 00:00:00 2001 From: Eric Covener Date: Wed, 14 Dec 2016 22:27:25 +0000 Subject: [PATCH 093/224] Merge r1774288 from trunk: short-circuit some kinds of looping in RewriteRule. PR60478 Submitted By: Jeff Wheelouse Committed By: covener git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774352 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 6 +++++- STATUS | 6 ------ modules/mappers/mod_rewrite.c | 11 +++++++++++ 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/CHANGES b/CHANGES index 964c51c55a..11152777d0 100644 --- a/CHANGES +++ b/CHANGES @@ -1,7 +1,7 @@ -*- coding: utf-8 -*- Changes with Apache 2.4.24 - + *) SECURITY: CVE-2016-8740 (cve.mitre.org) mod_http2: Mitigate DoS memory exhaustion via endless CONTINUATION frames. @@ -33,6 +33,10 @@ Changes with Apache 2.4.24 pollution by malicious clients, upstream servers or faulty modules. [Stefan Fritsch, Eric Covener, Yann Ylavic] + *) mod_rewrite: Limit runaway memory use by short circuiting some kinds of + looping RewriteRules when the local path significantly exceeds + LimitRequestLine. PR 60478. [Jeff Wheelhouse ] + *) mod_ratelimit: Allow for initial "burst" amount at full speed before throttling: PR 60145 [Andy Valencia , Jim Jagielski] diff --git a/STATUS b/STATUS index c166c7816d..71752d5fb9 100644 --- a/STATUS +++ b/STATUS @@ -118,12 +118,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - - *) Limit some kinds of rewrite looping. PR60478 - trunk patch: http://svn.apache.org/r1774288. - 2.4.x patch: trunk works - +1: covener, ylavic, jchampion - PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] diff --git a/modules/mappers/mod_rewrite.c b/modules/mappers/mod_rewrite.c index 56957c904a..dcf7988ed0 100644 --- a/modules/mappers/mod_rewrite.c +++ b/modules/mappers/mod_rewrite.c @@ -4295,6 +4295,17 @@ static int apply_rewrite_list(request_rec *r, apr_array_header_t *rewriterules, rc = apply_rewrite_rule(p, ctx); if (rc) { + + /* Catch looping rules with pathinfo growing unbounded */ + if ( strlen( r->filename ) > 2*r->server->limit_req_line ) { + ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, + "RewriteRule '%s' and URI '%s' " + "exceeded maximum length (%d)", + p->pattern, r->uri, 2*r->server->limit_req_line ); + r->status = HTTP_INTERNAL_SERVER_ERROR; + return ACTION_STATUS; + } + /* Regardless of what we do next, we've found a match. Check to see * if any of the request header fields were involved, and add them * to the Vary field of the response. -- GitLab From 1274faa24108123867c197dde2bf811992a1b93f Mon Sep 17 00:00:00 2001 From: Eric Covener Date: Thu, 15 Dec 2016 02:53:39 +0000 Subject: [PATCH 094/224] remove this showstopper, no longer anything contentious git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774361 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 2 -- 1 file changed, 2 deletions(-) diff --git a/STATUS b/STATUS index 71752d5fb9..93481e2ff0 100644 --- a/STATUS +++ b/STATUS @@ -113,8 +113,6 @@ CURRENT RELEASE NOTES: RELEASE SHOWSTOPPERS: - *) Final CVE check - PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] -- GitLab From b075c218de15daa3bfeaec4fed1ef51194288bd5 Mon Sep 17 00:00:00 2001 From: Ruediger Pluem Date: Thu, 15 Dec 2016 10:11:58 +0000 Subject: [PATCH 095/224] * Vote git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774409 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STATUS b/STATUS index 93481e2ff0..bec5d08da9 100644 --- a/STATUS +++ b/STATUS @@ -135,7 +135,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: *) Follow up on check_headers() (r1773995) to restore EOC semantic. trunk patch: http://svn.apache.org/r1774286 2.4.x patch: trunk works - +1: ylavic + +1: ylavic, rpluem PATCHES/ISSUES THAT ARE BEING WORKED -- GitLab From a106ae7126dc3b33ce8c26196e3d3cc764c82211 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Thu, 15 Dec 2016 12:17:32 +0000 Subject: [PATCH 096/224] vote git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774427 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STATUS b/STATUS index bec5d08da9..171225e7ef 100644 --- a/STATUS +++ b/STATUS @@ -135,7 +135,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: *) Follow up on check_headers() (r1773995) to restore EOC semantic. trunk patch: http://svn.apache.org/r1774286 2.4.x patch: trunk works - +1: ylavic, rpluem + +1: ylavic, rpluem, jim PATCHES/ISSUES THAT ARE BEING WORKED -- GitLab From 23a7a4b300acb586b0957311896959dfb9603d08 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Thu, 15 Dec 2016 12:17:46 +0000 Subject: [PATCH 097/224] promote git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774428 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/STATUS b/STATUS index 171225e7ef..bf002ada3a 100644 --- a/STATUS +++ b/STATUS @@ -117,6 +117,11 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] + *) Follow up on check_headers() (r1773995) to restore EOC semantic. + trunk patch: http://svn.apache.org/r1774286 + 2.4.x patch: trunk works + +1: ylavic, rpluem, jim + PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] @@ -132,11 +137,6 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: http://home.apache.org/~ylavic/patches/httpd-2.4.x-r1740928_and_co.patch +1: ylavic - *) Follow up on check_headers() (r1773995) to restore EOC semantic. - trunk patch: http://svn.apache.org/r1774286 - 2.4.x patch: trunk works - +1: ylavic, rpluem, jim - PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From be88bf2c2632a0af3c1f4794ba7d111405266c35 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Thu, 15 Dec 2016 12:18:59 +0000 Subject: [PATCH 098/224] Merge r1774286 from trunk: Follow up to r1773761: restore EOC semantic. Submitted by: ylavic Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774429 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 4 ---- modules/http/http_filters.c | 28 ++++++++++------------------ 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/STATUS b/STATUS index bf002ada3a..4a918d19a8 100644 --- a/STATUS +++ b/STATUS @@ -117,10 +117,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) Follow up on check_headers() (r1773995) to restore EOC semantic. - trunk patch: http://svn.apache.org/r1774286 - 2.4.x patch: trunk works - +1: ylavic, rpluem, jim PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] diff --git a/modules/http/http_filters.c b/modules/http/http_filters.c index 92ab36dd49..f6a19aef75 100644 --- a/modules/http/http_filters.c +++ b/modules/http/http_filters.c @@ -744,13 +744,10 @@ static APR_INLINE int check_headers(request_rec *r) static int check_headers_recursion(request_rec *r) { - request_rec *rr; - for (rr = r; rr; rr = rr->prev) { - void *dying = NULL; - apr_pool_userdata_get(&dying, "check_headers_recursion", rr->pool); - if (dying) { - return 1; - } + void *check = NULL; + apr_pool_userdata_get(&check, "check_headers_recursion", r->pool); + if (check) { + return 1; } apr_pool_userdata_setn("true", "check_headers_recursion", NULL, r->pool); return 0; @@ -1262,7 +1259,7 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, header_filter_ctx *ctx = f->ctx; const char *ctype; ap_bucket_error *eb = NULL; - int eos = 0; + apr_bucket *eos = NULL; AP_DEBUG_ASSERT(!r->main); @@ -1283,13 +1280,6 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, e != APR_BRIGADE_SENTINEL(b); e = APR_BUCKET_NEXT(e)) { - if (ctx->headers_error) { - if (APR_BUCKET_IS_EOS(e)) { - eos = 1; - break; - } - continue; - } if (AP_BUCKET_IS_ERROR(e) && !eb) { eb = e->data; continue; @@ -1302,6 +1292,9 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, ap_remove_output_filter(f); return ap_pass_brigade(f->next, b); } + if (ctx->headers_error && APR_BUCKET_IS_EOS(e)) { + eos = e; + } } if (ctx->headers_error) { if (!eos) { @@ -1327,10 +1320,9 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, ap_die(HTTP_INTERNAL_SERVER_ERROR, r); return AP_FILTER_ERROR; } - AP_DEBUG_ASSERT(APR_BUCKET_IS_EOS(e)); - APR_BUCKET_REMOVE(e); + APR_BUCKET_REMOVE(eos); apr_brigade_cleanup(b); - APR_BRIGADE_INSERT_TAIL(b, e); + APR_BRIGADE_INSERT_TAIL(b, eos); r->status = HTTP_INTERNAL_SERVER_ERROR; r->content_type = r->content_encoding = NULL; r->content_languages = NULL; -- GitLab From 1a7e2114393c9dd9f8d87e53dfd74ce9ede3c3c0 Mon Sep 17 00:00:00 2001 From: Luca Toscano Date: Thu, 15 Dec 2016 17:41:18 +0000 Subject: [PATCH 099/224] Merge r1772357, r1772399, r1772512 from trunk: Add a section to mpm-event's documentation to advertise new changes I tried to add a summary of Stefan's last patches just backported to 2.4.x today. I've read all of them and tried to report Stefan's comment from PR 53555 as much as possible. Please review and let me know if I wrong something incorrect or not precise enough. Fixed some wording in mpm-event's doc page Added some notes in mpm-event's doc page Submitted by: elukey git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774500 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/event.xml | 69 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/docs/manual/mod/event.xml b/docs/manual/mod/event.xml index 5a9162333a..9e9b7cd28c 100644 --- a/docs/manual/mod/event.xml +++ b/docs/manual/mod/event.xml @@ -101,10 +101,77 @@ of the AsyncRequestWorkerFactor.

    +
    Graceful process termination and Scoreboard usage +

    This mpm showed some scalability bottlenecks in the past leading to the following + error: "scoreboard is full, not at MaxRequestWorkers". + MaxRequestWorkers + limits the number of simultaneous requests that will be served at any given time + and also the number of allowed processes + (MaxRequestWorkers + / ThreadsPerChild), meanwhile + the Scoreboard is a representation of all the running processes and + the status of their worker threads. If the scoreboard is full (so all the + threads have a state that is not idle) but the number of active requests + served is not MaxRequestWorkers, + it means that some of them are blocking new requests that could be served + but that are queued instead (up to the limit imposed by + ListenBacklog). Most of the times + the threads are stuck in the Graceful state, namely they are waiting to + finish their work with a TCP connection to safely terminate and free up a + scoreboard slot (for example handling long running requests, slow clients + or connections with keep-alive enabled). Two scenarios are very common:

    +
      +
    • During a graceful restart. + The parent process signals all its children to complete + their work and terminate, while it reloads the config and forks new + processes. If the old children keep running for a while before stopping, + the scoreboard will be partially occupied until their slots are freed. +
    • +
    • When the server load goes down in a way that causes httpd to + stop some processes (for example due to + MaxSpareThreads). + This is particularly problematic because when the load increases again, + httpd will try to start new processes. + If the pattern repeats, the number of processes can rise quite a bit, + ending up in a mixture of old processes trying to stop and new ones + trying to do some work. +
    • +
    +

    From 2.4.24 onward, mpm-event is smarter and it is able to handle + graceful terminations in a much better way. Some of the improvements are:

    +
      +
    • Allow the use of all the scoreboard slots up to + ServerLimit. + MaxRequestWorkers and + ThreadsPerChild are used + to limit the amount of active processes, meanwhile + ServerLimit + takes also into account the ones doing a graceful + close to allow extra slots when needed. The idea is to use + ServerLimit to instruct httpd + about how many overall processes are tolerated before impacting + the system resources. +
    • +
    • Force gracefully finishing processes to close their + connections in keep-alive state.
    • +
    • During graceful shutdown, if there are more running worker threads + than open connections for a given process, terminate these threads to + free resources faster (which may be needed for new processes).
    • +
    • If the scoreboard is full, prevent more processes to finish + gracefully due to reduced load until old processes have terminated + (otherwise the situation would get worse once the load increases again).
    • +
    +

    The behavior described in the last point is completely observable via + mod_status in the connection summary table through two new + columns: "Slot" and "Stopping". The former indicates the PID and + the latter if the process is stopping or not; the extra state "Yes (old gen)" + indicates a process still running after a graceful restart.

    +
    +
    Limitations

    The improved connection handling may not work for certain connection filters that have declared themselves as incompatible with event. In these - cases, this MPM will fall back to the behaviour of the + cases, this MPM will fall back to the behavior of the worker MPM and reserve one worker thread per connection. All modules shipped with the server are compatible with the event MPM.

    -- GitLab From df932b1f580c2c8b6bc3b047c265a8b3635d06d1 Mon Sep 17 00:00:00 2001 From: Luca Toscano Date: Thu, 15 Dec 2016 17:41:43 +0000 Subject: [PATCH 100/224] documentation rebuild git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774501 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/event.html.en | 69 ++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/docs/manual/mod/event.html.en b/docs/manual/mod/event.html.en index a8af7208d8..0883cb1eec 100644 --- a/docs/manual/mod/event.html.en +++ b/docs/manual/mod/event.html.en @@ -139,10 +139,77 @@ of the AsyncRequestWorkerFactor.

    +

    Graceful process termination and Scoreboard usage

    +

    This mpm showed some scalability bottlenecks in the past leading to the following + error: "scoreboard is full, not at MaxRequestWorkers". + MaxRequestWorkers + limits the number of simultaneous requests that will be served at any given time + and also the number of allowed processes + (MaxRequestWorkers + / ThreadsPerChild), meanwhile + the Scoreboard is a representation of all the running processes and + the status of their worker threads. If the scoreboard is full (so all the + threads have a state that is not idle) but the number of active requests + served is not MaxRequestWorkers, + it means that some of them are blocking new requests that could be served + but that are queued instead (up to the limit imposed by + ListenBacklog). Most of the times + the threads are stuck in the Graceful state, namely they are waiting to + finish their work with a TCP connection to safely terminate and free up a + scoreboard slot (for example handling long running requests, slow clients + or connections with keep-alive enabled). Two scenarios are very common:

    +
      +
    • During a graceful restart. + The parent process signals all its children to complete + their work and terminate, while it reloads the config and forks new + processes. If the old children keep running for a while before stopping, + the scoreboard will be partially occupied until their slots are freed. +
    • +
    • When the server load goes down in a way that causes httpd to + stop some processes (for example due to + MaxSpareThreads). + This is particularly problematic because when the load increases again, + httpd will try to start new processes. + If the pattern repeats, the number of processes can rise quite a bit, + ending up in a mixture of old processes trying to stop and new ones + trying to do some work. +
    • +
    +

    From 2.4.24 onward, mpm-event is smarter and it is able to handle + graceful terminations in a much better way. Some of the improvements are:

    +
      +
    • Allow the use of all the scoreboard slots up to + ServerLimit. + MaxRequestWorkers and + ThreadsPerChild are used + to limit the amount of active processes, meanwhile + ServerLimit + takes also into account the ones doing a graceful + close to allow extra slots when needed. The idea is to use + ServerLimit to instruct httpd + about how many overall processes are tolerated before impacting + the system resources. +
    • +
    • Force gracefully finishing processes to close their + connections in keep-alive state.
    • +
    • During graceful shutdown, if there are more running worker threads + than open connections for a given process, terminate these threads to + free resources faster (which may be needed for new processes).
    • +
    • If the scoreboard is full, prevent more processes to finish + gracefully due to reduced load until old processes have terminated + (otherwise the situation would get worse once the load increases again).
    • +
    +

    The behavior described in the last point is completely observable via + mod_status in the connection summary table through two new + columns: "Slot" and "Stopping". The former indicates the PID and + the latter if the process is stopping or not; the extra state "Yes (old gen)" + indicates a process still running after a graceful restart.

    + +

    Limitations

    The improved connection handling may not work for certain connection filters that have declared themselves as incompatible with event. In these - cases, this MPM will fall back to the behaviour of the + cases, this MPM will fall back to the behavior of the worker MPM and reserve one worker thread per connection. All modules shipped with the server are compatible with the event MPM.

    -- GitLab From 4d0194dd5fbe8c9c2a17b032e2225e12c402ffac Mon Sep 17 00:00:00 2001 From: Luca Toscano Date: Thu, 15 Dec 2016 17:48:16 +0000 Subject: [PATCH 101/224] Translation variations after doc rebuild git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774502 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/event.xml.fr | 2 +- docs/manual/mod/event.xml.meta | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/manual/mod/event.xml.fr b/docs/manual/mod/event.xml.fr index f433e33a30..c670463155 100644 --- a/docs/manual/mod/event.xml.fr +++ b/docs/manual/mod/event.xml.fr @@ -1,7 +1,7 @@ - + diff --git a/docs/manual/mod/event.xml.meta b/docs/manual/mod/event.xml.meta index 7b7fc287cf..58ce5cc073 100644 --- a/docs/manual/mod/event.xml.meta +++ b/docs/manual/mod/event.xml.meta @@ -8,6 +8,6 @@ en - fr + fr -- GitLab From 7ae53485b026dea2217212d7509c371eab5fc71d Mon Sep 17 00:00:00 2001 From: Luca Toscano Date: Thu, 15 Dec 2016 17:55:15 +0000 Subject: [PATCH 102/224] Documentation rebuild git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774503 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/mod_ratelimit.html.en | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/manual/mod/mod_ratelimit.html.en b/docs/manual/mod/mod_ratelimit.html.en index a2b4f29894..3a5bae2abf 100644 --- a/docs/manual/mod/mod_ratelimit.html.en +++ b/docs/manual/mod/mod_ratelimit.html.en @@ -32,7 +32,8 @@ -
    Description:Bandwidth Rate Limiting for Clients
    Status:Extension
    ModuleIdentifier:ratelimit_module
    SourceFile:mod_ratelimit.c
    +SourceFile:mod_ratelimit.c +Compatibility:rate-initial-burst available in httpd 2.4.24 and later.

    Summary

    @@ -40,11 +41,20 @@ The connection speed to be simulated is specified, in KiB/s, using the environment variable rate-limit.

    +

    Optionally, an initial amount of burst data, in KiB, may be +configured to be passed at full speed before throttling to the +specified rate limit. This value is optional, and is set using +the environment variable rate-initial-burst.

    +

    Example Configuration

    <Location "/downloads">
         SetOutputFilter RATE_LIMIT
         SetEnv rate-limit 400 
    +    SetEnv rate-initial-burst 512
     </Location>
    -
    +
    +If the value specified for rate-limit causes integer overflow, the rate-limited will be disabled. +If the value specified for rate-limit-burst causes integer overflow, the burst will be disabled. +

    Directives

    -- GitLab From 4a96b1bc761f817d6d0d95327c5cd709fb01c386 Mon Sep 17 00:00:00 2001 From: Luca Toscano Date: Thu, 15 Dec 2016 18:32:47 +0000 Subject: [PATCH 103/224] Added a note to mod_ratelimit's documentation. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774511 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/mod_ratelimit.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/manual/mod/mod_ratelimit.xml b/docs/manual/mod/mod_ratelimit.xml index 973b8e1f0f..2e4418abe5 100644 --- a/docs/manual/mod/mod_ratelimit.xml +++ b/docs/manual/mod/mod_ratelimit.xml @@ -35,6 +35,8 @@ the document to validate. -->

    Provides a filter named RATE_LIMIT to limit client bandwidth. +The throttling is applied to each HTTP response while it is transferred to the client, +and not aggregated at IP/client level. The connection speed to be simulated is specified, in KiB/s, using the environment variable rate-limit.

    -- GitLab From cd8d3de808cf8a20475244eea50297b39cc1f6b4 Mon Sep 17 00:00:00 2001 From: Luca Toscano Date: Thu, 15 Dec 2016 18:33:40 +0000 Subject: [PATCH 104/224] Documentation rebuild. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774512 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/mod_ratelimit.html.en | 2 ++ docs/manual/mod/mod_ratelimit.xml.fr | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/manual/mod/mod_ratelimit.html.en b/docs/manual/mod/mod_ratelimit.html.en index 3a5bae2abf..76c302a535 100644 --- a/docs/manual/mod/mod_ratelimit.html.en +++ b/docs/manual/mod/mod_ratelimit.html.en @@ -38,6 +38,8 @@

    Provides a filter named RATE_LIMIT to limit client bandwidth. +The throttling is applied to each HTTP response while it is transferred to the client, +and not aggregated at IP/client level. The connection speed to be simulated is specified, in KiB/s, using the environment variable rate-limit.

    diff --git a/docs/manual/mod/mod_ratelimit.xml.fr b/docs/manual/mod/mod_ratelimit.xml.fr index d5b9a52a1d..eefe54692c 100644 --- a/docs/manual/mod/mod_ratelimit.xml.fr +++ b/docs/manual/mod/mod_ratelimit.xml.fr @@ -1,7 +1,7 @@ - + -- GitLab From 2ed15f5a904d313858b4609f765e30b1bf8f78c0 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Thu, 15 Dec 2016 21:34:36 +0000 Subject: [PATCH 105/224] kill 'em early git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774527 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/STATUS b/STATUS index 4a918d19a8..3a30977548 100644 --- a/STATUS +++ b/STATUS @@ -133,6 +133,12 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: http://home.apache.org/~ylavic/patches/httpd-2.4.x-r1740928_and_co.patch +1: ylavic + *) event: kill the keepalive conns as early as possible during graceful + process exit. + trunk patch: + http://svn.apache.org/r1774525 + 2.4.x patch: trunk works + +1: jim PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From 4c23546368aec23e61c24360582421121feb3c0a Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Fri, 16 Dec 2016 00:02:47 +0000 Subject: [PATCH 106/224] Note. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774543 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/STATUS b/STATUS index 3a30977548..125fec4b87 100644 --- a/STATUS +++ b/STATUS @@ -139,6 +139,8 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: http://svn.apache.org/r1774525 2.4.x patch: trunk works +1: jim + ylavic: reverted, see discussion on dev@ and r1774538 if you still + think a backport is necessary. PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From abe16178b0493d742a03e25ef4ad4d6f7f0e5478 Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Fri, 16 Dec 2016 00:10:40 +0000 Subject: [PATCH 107/224] Propose. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774544 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/STATUS b/STATUS index 125fec4b87..655e94a678 100644 --- a/STATUS +++ b/STATUS @@ -142,6 +142,12 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: ylavic: reverted, see discussion on dev@ and r1774538 if you still think a backport is necessary. + *) event: close a race condition where we might re-enable listeners while they + are already or about to be closed. + trunk patch: http://svn.apache.org/r1774541 + 2.4.x patch: trunk works + +1: ylavic + PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From eb3880311bb148fb66d03904e6a53f8c0344570c Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 16 Dec 2016 11:32:40 +0000 Subject: [PATCH 108/224] revoke git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774574 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 9 --------- 1 file changed, 9 deletions(-) diff --git a/STATUS b/STATUS index 655e94a678..1d79ec7e0e 100644 --- a/STATUS +++ b/STATUS @@ -133,15 +133,6 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: http://home.apache.org/~ylavic/patches/httpd-2.4.x-r1740928_and_co.patch +1: ylavic - *) event: kill the keepalive conns as early as possible during graceful - process exit. - trunk patch: - http://svn.apache.org/r1774525 - 2.4.x patch: trunk works - +1: jim - ylavic: reverted, see discussion on dev@ and r1774538 if you still - think a backport is necessary. - *) event: close a race condition where we might re-enable listeners while they are already or about to be closed. trunk patch: http://svn.apache.org/r1774541 -- GitLab From 915507b4c0906d3659645002f6e890475c94a4c0 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 16 Dec 2016 11:55:16 +0000 Subject: [PATCH 109/224] Get ready to tag 2.4.24 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774575 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 2 +- include/ap_release.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/STATUS b/STATUS index 1d79ec7e0e..c196558c26 100644 --- a/STATUS +++ b/STATUS @@ -34,7 +34,7 @@ Release history: [NOTE that x.{odd}.z versions are strictly Alpha/Beta releases, while x.{even}.z versions are Stable/GA releases.] - 2.4.24 : In development. Jim proposes to T&R ~ Dec 15th. + 2.4.24 : Tagged on December 16, 2016. 2.4.23 : Tagged on June 30, 2016. Released on July 05, 2016. 2.4.22 : Tagged on June 20, 2016, not released. 2.4.21 : Tagged on June 16, 2016, not released. diff --git a/include/ap_release.h b/include/ap_release.h index 87160f13fe..388f7c4775 100644 --- a/include/ap_release.h +++ b/include/ap_release.h @@ -44,7 +44,7 @@ #define AP_SERVER_MAJORVERSION_NUMBER 2 #define AP_SERVER_MINORVERSION_NUMBER 4 #define AP_SERVER_PATCHLEVEL_NUMBER 24 -#define AP_SERVER_DEVBUILD_BOOLEAN 1 +#define AP_SERVER_DEVBUILD_BOOLEAN 0 /* Synchronize the above with docs/manual/style/version.ent */ -- GitLab From faa8e015c6532ab55b0c5ff3899c94a52d5ec956 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 16 Dec 2016 11:57:50 +0000 Subject: [PATCH 110/224] And we are 2.4.25-dev git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774577 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 2 ++ STATUS | 1 + docs/manual/style/version.ent | 2 +- include/ap_release.h | 4 ++-- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 11152777d0..a82bed409a 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,7 @@ -*- coding: utf-8 -*- +Changes with Apache 2.4.25 + Changes with Apache 2.4.24 *) SECURITY: CVE-2016-8740 (cve.mitre.org) diff --git a/STATUS b/STATUS index c196558c26..42c8d18261 100644 --- a/STATUS +++ b/STATUS @@ -34,6 +34,7 @@ Release history: [NOTE that x.{odd}.z versions are strictly Alpha/Beta releases, while x.{even}.z versions are Stable/GA releases.] + 2.4.25 : In development. 2.4.24 : Tagged on December 16, 2016. 2.4.23 : Tagged on June 30, 2016. Released on July 05, 2016. 2.4.22 : Tagged on June 20, 2016, not released. diff --git a/docs/manual/style/version.ent b/docs/manual/style/version.ent index 697d69861c..0c2a5f3868 100644 --- a/docs/manual/style/version.ent +++ b/docs/manual/style/version.ent @@ -19,6 +19,6 @@ - + diff --git a/include/ap_release.h b/include/ap_release.h index 388f7c4775..35ace5a421 100644 --- a/include/ap_release.h +++ b/include/ap_release.h @@ -43,8 +43,8 @@ #define AP_SERVER_MAJORVERSION_NUMBER 2 #define AP_SERVER_MINORVERSION_NUMBER 4 -#define AP_SERVER_PATCHLEVEL_NUMBER 24 -#define AP_SERVER_DEVBUILD_BOOLEAN 0 +#define AP_SERVER_PATCHLEVEL_NUMBER 25 +#define AP_SERVER_DEVBUILD_BOOLEAN 1 /* Synchronize the above with docs/manual/style/version.ent */ -- GitLab From c9daa01f2d5a7d21d20814e5aa1b5d1faa6e62e0 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 16 Dec 2016 12:31:33 +0000 Subject: [PATCH 111/224] xforms git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774580 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/event.html.fr | 2 ++ docs/manual/mod/mod_ratelimit.html.fr | 2 ++ 2 files changed, 4 insertions(+) diff --git a/docs/manual/mod/event.html.fr b/docs/manual/mod/event.html.fr index 1f81d03f55..6080551dd1 100644 --- a/docs/manual/mod/event.html.fr +++ b/docs/manual/mod/event.html.fr @@ -29,6 +29,8 @@

    Langues Disponibles:  en  |  fr 

    +
    Cette traduction peut tre prime. Vrifiez la version + anglaise pour les changements rcents.
    diff --git a/docs/manual/mod/mod_ratelimit.html.fr b/docs/manual/mod/mod_ratelimit.html.fr index c6ade19c30..6121e06552 100644 --- a/docs/manual/mod/mod_ratelimit.html.fr +++ b/docs/manual/mod/mod_ratelimit.html.fr @@ -29,6 +29,8 @@

    Langues Disponibles:  en  |  fr 

    +
    Cette traduction peut tre prime. Vrifiez la version + anglaise pour les changements rcents.
    Description:Une variante du MPM worker conue pour ne mobiliser des threads que pour les connexions en cours de traitement
    Statut:MPM
    -- GitLab From d2f3e181e9cb8efcaa05d34ecaa09bc2144116cf Mon Sep 17 00:00:00 2001 From: Rainer Jung Date: Fri, 16 Dec 2016 14:48:49 +0000 Subject: [PATCH 112/224] Propose simple fix observed during 2.4.24 test builds. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774605 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/STATUS b/STATUS index 42c8d18261..2a164ff4a7 100644 --- a/STATUS +++ b/STATUS @@ -140,6 +140,14 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: trunk works +1: ylavic + *) mod_socache_memcache: Use correct format pattern, "%lu" is wrong for + apr_uint64_t on some platforms. + Followup to r1649491 (trunk) resp. r1774016 (2.4.x). + trunk patch: http://svn.apache.org/r1774602 + 2.4.x patch: trunk works + +1: rjung + + PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From f8349db46fbd87e508b6418240ccf2ee9c8e3941 Mon Sep 17 00:00:00 2001 From: Rainer Jung Date: Fri, 16 Dec 2016 15:06:02 +0000 Subject: [PATCH 113/224] Propose. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774611 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/STATUS b/STATUS index 2a164ff4a7..735c2053f0 100644 --- a/STATUS +++ b/STATUS @@ -147,6 +147,14 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: trunk works +1: rjung + *) mod_socache_memcache: Add ../generators to include path for Windows + build. It now needs mod_status.h. + Untested but exactly analogous to what works for + mod_socache_shmcb and others. + trunk patch: http://svn.apache.org/r1774609 + 2.4.x patch: trunk works + +1: rjung + PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From aa174010c4ae37ad94670eda57bd60875cdaeb65 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 16 Dec 2016 15:11:02 +0000 Subject: [PATCH 114/224] Some votes git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774612 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/STATUS b/STATUS index 735c2053f0..55c53ab3e8 100644 --- a/STATUS +++ b/STATUS @@ -138,14 +138,14 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: are already or about to be closed. trunk patch: http://svn.apache.org/r1774541 2.4.x patch: trunk works - +1: ylavic + +1: ylavic, jim *) mod_socache_memcache: Use correct format pattern, "%lu" is wrong for apr_uint64_t on some platforms. Followup to r1649491 (trunk) resp. r1774016 (2.4.x). trunk patch: http://svn.apache.org/r1774602 2.4.x patch: trunk works - +1: rjung + +1: rjung, jim *) mod_socache_memcache: Add ../generators to include path for Windows build. It now needs mod_status.h. @@ -153,7 +153,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: mod_socache_shmcb and others. trunk patch: http://svn.apache.org/r1774609 2.4.x patch: trunk works - +1: rjung + +1: rjung, jim PATCHES/ISSUES THAT ARE BEING WORKED -- GitLab From 862db78105f07997901e46a177f0f2b879e8c853 Mon Sep 17 00:00:00 2001 From: Rainer Jung Date: Fri, 16 Dec 2016 15:18:50 +0000 Subject: [PATCH 115/224] And another proposal. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774620 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/STATUS b/STATUS index 55c53ab3e8..6088a5a147 100644 --- a/STATUS +++ b/STATUS @@ -155,6 +155,14 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: trunk works +1: rjung, jim + *) APR_HAVE_foo is checked via #if, not #ifdef (since it should always be + defined, to either 0 or 1). + This fixes a compile error on Windows introduced by r1702948. + as well as straightens up two long-time glitches. + trunk patch: http://svn.apache.org/r1706595 + 2.4.x patch: trunk works + +1: rjung + PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From 057f939caae3ff5f66fda3675b91febbb8d2a13f Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 16 Dec 2016 15:24:28 +0000 Subject: [PATCH 116/224] vote... and Good Catch! git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774622 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STATUS b/STATUS index 6088a5a147..c6e63dc16c 100644 --- a/STATUS +++ b/STATUS @@ -161,7 +161,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: as well as straightens up two long-time glitches. trunk patch: http://svn.apache.org/r1706595 2.4.x patch: trunk works - +1: rjung + +1: rjung, jim PATCHES/ISSUES THAT ARE BEING WORKED -- GitLab From 6aad4a290264845ba39c2c41782ad52e6c3c0024 Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Fri, 16 Dec 2016 15:41:24 +0000 Subject: [PATCH 117/224] Vote, promote. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774623 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/STATUS b/STATUS index c6e63dc16c..d044b90ef3 100644 --- a/STATUS +++ b/STATUS @@ -118,6 +118,21 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] + *) mod_socache_memcache: Use correct format pattern, "%lu" is wrong for + apr_uint64_t on some platforms. + Followup to r1649491 (trunk) resp. r1774016 (2.4.x). + trunk patch: http://svn.apache.org/r1774602 + 2.4.x patch: trunk works + +1: rjung, jim, ylavic + + *) APR_HAVE_foo is checked via #if, not #ifdef (since it should always be + defined, to either 0 or 1). + This fixes a compile error on Windows introduced by r1702948. + as well as straightens up two long-time glitches. + trunk patch: http://svn.apache.org/r1706595 + 2.4.x patch: trunk works + +1: rjung, jim, ylavic + PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] @@ -140,13 +155,6 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: trunk works +1: ylavic, jim - *) mod_socache_memcache: Use correct format pattern, "%lu" is wrong for - apr_uint64_t on some platforms. - Followup to r1649491 (trunk) resp. r1774016 (2.4.x). - trunk patch: http://svn.apache.org/r1774602 - 2.4.x patch: trunk works - +1: rjung, jim - *) mod_socache_memcache: Add ../generators to include path for Windows build. It now needs mod_status.h. Untested but exactly analogous to what works for @@ -155,14 +163,6 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: trunk works +1: rjung, jim - *) APR_HAVE_foo is checked via #if, not #ifdef (since it should always be - defined, to either 0 or 1). - This fixes a compile error on Windows introduced by r1702948. - as well as straightens up two long-time glitches. - trunk patch: http://svn.apache.org/r1706595 - 2.4.x patch: trunk works - +1: rjung, jim - PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From 2f9bc77eff063d37bb8a63304d7cd30fa6e79c5f Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 16 Dec 2016 15:43:44 +0000 Subject: [PATCH 118/224] Merge r1774602 from trunk: Use correct format pattern, "%lu" is wrong for apr_uint64_t on some platforms. Followup to r1649491. Submitted by: rjung Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774625 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 7 ------- modules/cache/mod_socache_memcache.c | 12 ++++++------ 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/STATUS b/STATUS index d044b90ef3..3c360f7d29 100644 --- a/STATUS +++ b/STATUS @@ -118,13 +118,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) mod_socache_memcache: Use correct format pattern, "%lu" is wrong for - apr_uint64_t on some platforms. - Followup to r1649491 (trunk) resp. r1774016 (2.4.x). - trunk patch: http://svn.apache.org/r1774602 - 2.4.x patch: trunk works - +1: rjung, jim, ylavic - *) APR_HAVE_foo is checked via #if, not #ifdef (since it should always be defined, to either 0 or 1). This fixes a compile error on Windows introduced by r1702948. diff --git a/modules/cache/mod_socache_memcache.c b/modules/cache/mod_socache_memcache.c index 0b884e407f..e943b9b2b8 100644 --- a/modules/cache/mod_socache_memcache.c +++ b/modules/cache/mod_socache_memcache.c @@ -318,15 +318,15 @@ static void socache_mc_status(ap_socache_instance_t *ctx, request_rec *r, int fl stats->version , stats->pointer_size, stats->pid, stats->uptime/3600); ap_rprintf(r, "Clients:: Structures: %u, Total: %u, Current: %u
    \n", stats->connection_structures, stats->total_connections, stats->curr_connections); - ap_rprintf(r, "Storage:: Total Items: %u, Current Items: %u, Bytes: %lu
    \n", + ap_rprintf(r, "Storage:: Total Items: %u, Current Items: %u, Bytes: %" APR_UINT64_T_FMT "
    \n", stats->total_items, stats->curr_items, stats->bytes); ap_rprintf(r, "CPU:: System: %u, User: %u
    \n", (unsigned)stats->rusage_system, (unsigned)stats->rusage_user ); ap_rprintf(r, "Cache:: Gets: %u, Sets: %u, Hits: %u, Misses: %u
    \n", stats->cmd_get, stats->cmd_set, stats->get_hits, stats->get_misses); - ap_rprintf(r, "Net:: Input bytes: %lu, Output bytes: %lu
    \n", + ap_rprintf(r, "Net:: Input bytes: %" APR_UINT64_T_FMT ", Output bytes: %" APR_UINT64_T_FMT "
    \n", stats->bytes_read, stats->bytes_written); - ap_rprintf(r, "Misc:: Evictions: %lu, MaxMem: %u, Threads: %u
    \n", + ap_rprintf(r, "Misc:: Evictions: %" APR_UINT64_T_FMT ", MaxMem: %u, Threads: %u
    \n", stats->evictions, stats->limit_maxbytes, stats->threads); ap_rputs("

    \n", r); } @@ -335,15 +335,15 @@ static void socache_mc_status(ap_socache_instance_t *ctx, request_rec *r, int fl stats->version , stats->pointer_size, stats->pid, stats->uptime/3600, br); ap_rprintf(r, "Clients:: Structures: %d, Total: %d, Current: %u %s\n", stats->connection_structures, stats->total_connections, stats->curr_connections, br); - ap_rprintf(r, "Storage:: Total Items: %u, Current Items: %u, Bytes: %lu %s\n", + ap_rprintf(r, "Storage:: Total Items: %u, Current Items: %u, Bytes: %" APR_UINT64_T_FMT " %s\n", stats->total_items, stats->curr_items, stats->bytes, br); ap_rprintf(r, "CPU:: System: %u, User: %u %s\n", (unsigned)stats->rusage_system, (unsigned)stats->rusage_user , br); ap_rprintf(r, "Cache:: Gets: %u, Sets: %u, Hits: %u, Misses: %u %s\n", stats->cmd_get, stats->cmd_set, stats->get_hits, stats->get_misses, br); - ap_rprintf(r, "Net:: Input bytes: %lu, Output bytes: %lu %s\n", + ap_rprintf(r, "Net:: Input bytes: %" APR_UINT64_T_FMT ", Output bytes: %" APR_UINT64_T_FMT " %s\n", stats->bytes_read, stats->bytes_written, br); - ap_rprintf(r, "Misc:: Evictions: %lu, MaxMem: %u, Threads: %u %s\n", + ap_rprintf(r, "Misc:: Evictions: %" APR_UINT64_T_FMT ", MaxMem: %u, Threads: %u %s\n", stats->evictions, stats->limit_maxbytes, stats->threads, br); } } -- GitLab From 97f9feee751a91967a33a746656d0d5081030f28 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 16 Dec 2016 15:44:07 +0000 Subject: [PATCH 119/224] Merge r1706595 from trunk: Follow-up to r1702948: APR_HAVE_foo is checked via #if, not #ifdef (since it should always be defined, to either 0 or 1) This fixes a compile error on Windows introduced by r1702948 as well as straightens up two long-time glitches. Submitted by: trawick Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774626 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 7 ------- include/scoreboard.h | 2 +- modules/filters/regexp.c | 2 +- modules/ssl/ssl_private.h | 2 +- 4 files changed, 3 insertions(+), 10 deletions(-) diff --git a/STATUS b/STATUS index 3c360f7d29..b9be65830a 100644 --- a/STATUS +++ b/STATUS @@ -118,13 +118,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) APR_HAVE_foo is checked via #if, not #ifdef (since it should always be - defined, to either 0 or 1). - This fixes a compile error on Windows introduced by r1702948. - as well as straightens up two long-time glitches. - trunk patch: http://svn.apache.org/r1706595 - 2.4.x patch: trunk works - +1: rjung, jim, ylavic PATCHES PROPOSED TO BACKPORT FROM TRUNK: diff --git a/include/scoreboard.h b/include/scoreboard.h index e3c68d26cb..1378128943 100644 --- a/include/scoreboard.h +++ b/include/scoreboard.h @@ -26,7 +26,7 @@ extern "C" { #endif -#ifdef APR_HAVE_SYS_TIME_H +#if APR_HAVE_SYS_TIME_H #include #include #endif diff --git a/modules/filters/regexp.c b/modules/filters/regexp.c index ba118a6552..4acccca676 100644 --- a/modules/filters/regexp.c +++ b/modules/filters/regexp.c @@ -30,7 +30,7 @@ #include "apr.h" #include "apr_lib.h" -#ifdef APR_HAVE_LIMITS_H +#if APR_HAVE_LIMITS_H #include #endif #if APR_HAVE_STDLIB_H diff --git a/modules/ssl/ssl_private.h b/modules/ssl/ssl_private.h index 7f6f9fd95a..7813e4137c 100644 --- a/modules/ssl/ssl_private.h +++ b/modules/ssl/ssl_private.h @@ -57,7 +57,7 @@ /* The #ifdef macros are only defined AFTER including the above * therefore we cannot include these system files at the top :-( */ -#ifdef APR_HAVE_STDLIB_H +#if APR_HAVE_STDLIB_H #include #endif #if APR_HAVE_SYS_TIME_H -- GitLab From 3d18f7c475a7935335ce91b1c234f22cfa484679 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 16 Dec 2016 15:45:47 +0000 Subject: [PATCH 120/224] note CHANGES git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774628 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES b/CHANGES index a82bed409a..52d1b50948 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ Changes with Apache 2.4.25 + *) Fix some build issues related to various modules. + [Rainer Jung] + Changes with Apache 2.4.24 *) SECURITY: CVE-2016-8740 (cve.mitre.org) -- GitLab From 30c71f7ede76f983873763e412648865510ce438 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 16 Dec 2016 18:21:24 +0000 Subject: [PATCH 121/224] Merge r1774609 from trunk: Add ../generators to include path for Windows build of mod_socache_memcache. It now needs mod_status.h. Untested but exactly analogous to what works for mod_socache_shmcb and others. Submitted by: rjung Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774643 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 8 -------- modules/cache/mod_socache_memcache.dsp | 4 ++-- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/STATUS b/STATUS index b9be65830a..30ba79c687 100644 --- a/STATUS +++ b/STATUS @@ -141,14 +141,6 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: trunk works +1: ylavic, jim - *) mod_socache_memcache: Add ../generators to include path for Windows - build. It now needs mod_status.h. - Untested but exactly analogous to what works for - mod_socache_shmcb and others. - trunk patch: http://svn.apache.org/r1774609 - 2.4.x patch: trunk works - +1: rjung, jim - PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] diff --git a/modules/cache/mod_socache_memcache.dsp b/modules/cache/mod_socache_memcache.dsp index e4f81a3c2a..d530826961 100644 --- a/modules/cache/mod_socache_memcache.dsp +++ b/modules/cache/mod_socache_memcache.dsp @@ -43,7 +43,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "mod_socache_memcache_EXPORTS" /FD /c -# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Release\mod_socache_memcache_src" /FD /c +# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /I "../generators" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Release\mod_socache_memcache_src" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" @@ -75,7 +75,7 @@ PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).ma # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c -# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Debug\mod_socache_memcache_src" /FD /c +# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /I "../generators" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Debug\mod_socache_memcache_src" /FD /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" -- GitLab From 8b7878cc7c3709d6db123453c0ceed53f5498b78 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 16 Dec 2016 18:23:39 +0000 Subject: [PATCH 122/224] Roll on 2.4.25 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774644 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 4 ++-- include/ap_release.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/STATUS b/STATUS index 30ba79c687..cbe86ca35a 100644 --- a/STATUS +++ b/STATUS @@ -34,8 +34,8 @@ Release history: [NOTE that x.{odd}.z versions are strictly Alpha/Beta releases, while x.{even}.z versions are Stable/GA releases.] - 2.4.25 : In development. - 2.4.24 : Tagged on December 16, 2016. + 2.4.25 : Tagged on December 16, 2016. + 2.4.24 : Tagged on December 16, 2016, not released. 2.4.23 : Tagged on June 30, 2016. Released on July 05, 2016. 2.4.22 : Tagged on June 20, 2016, not released. 2.4.21 : Tagged on June 16, 2016, not released. diff --git a/include/ap_release.h b/include/ap_release.h index 35ace5a421..92fe7dea8a 100644 --- a/include/ap_release.h +++ b/include/ap_release.h @@ -44,7 +44,7 @@ #define AP_SERVER_MAJORVERSION_NUMBER 2 #define AP_SERVER_MINORVERSION_NUMBER 4 #define AP_SERVER_PATCHLEVEL_NUMBER 25 -#define AP_SERVER_DEVBUILD_BOOLEAN 1 +#define AP_SERVER_DEVBUILD_BOOLEAN 0 /* Synchronize the above with docs/manual/style/version.ent */ -- GitLab From db3df5a26033b7c3331c9f7ab58b7d1d17a2fcc9 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 16 Dec 2016 18:26:03 +0000 Subject: [PATCH 123/224] and we are now 2.4.26-dev git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774647 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 2 ++ STATUS | 1 + docs/manual/style/version.ent | 2 +- include/ap_release.h | 4 ++-- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 52d1b50948..ffaf8c4b3a 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,7 @@ -*- coding: utf-8 -*- +Changes with Apache 2.4.26 + Changes with Apache 2.4.25 *) Fix some build issues related to various modules. diff --git a/STATUS b/STATUS index cbe86ca35a..33e5f266f1 100644 --- a/STATUS +++ b/STATUS @@ -34,6 +34,7 @@ Release history: [NOTE that x.{odd}.z versions are strictly Alpha/Beta releases, while x.{even}.z versions are Stable/GA releases.] + 2.4.26 : In development. 2.4.25 : Tagged on December 16, 2016. 2.4.24 : Tagged on December 16, 2016, not released. 2.4.23 : Tagged on June 30, 2016. Released on July 05, 2016. diff --git a/docs/manual/style/version.ent b/docs/manual/style/version.ent index 0c2a5f3868..b527680139 100644 --- a/docs/manual/style/version.ent +++ b/docs/manual/style/version.ent @@ -19,6 +19,6 @@ - + diff --git a/include/ap_release.h b/include/ap_release.h index 92fe7dea8a..a8d8bfe863 100644 --- a/include/ap_release.h +++ b/include/ap_release.h @@ -43,8 +43,8 @@ #define AP_SERVER_MAJORVERSION_NUMBER 2 #define AP_SERVER_MINORVERSION_NUMBER 4 -#define AP_SERVER_PATCHLEVEL_NUMBER 25 -#define AP_SERVER_DEVBUILD_BOOLEAN 0 +#define AP_SERVER_PATCHLEVEL_NUMBER 26 +#define AP_SERVER_DEVBUILD_BOOLEAN 1 /* Synchronize the above with docs/manual/style/version.ent */ -- GitLab From 87fc90764d25c2904cf4ee89f68c35479566fbed Mon Sep 17 00:00:00 2001 From: "William A. Rowe Jr" Date: Fri, 16 Dec 2016 18:48:49 +0000 Subject: [PATCH 124/224] Fix exported .mak output of mod_socache_memcache for '../generators' dependency git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774650 13f79535-47bb-0310-9956-ffa450edef68 --- modules/cache/mod_socache_memcache.mak | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/cache/mod_socache_memcache.mak b/modules/cache/mod_socache_memcache.mak index 52b7508a29..b75a9a1bd8 100644 --- a/modules/cache/mod_socache_memcache.mak +++ b/modules/cache/mod_socache_memcache.mak @@ -62,7 +62,7 @@ CLEAN : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe -CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\mod_socache_memcache_src" /FD /c +CPP_PROJ=/nologo /MD /W3 /Zi /O2 /Oy- /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /I "../generators" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\mod_socache_memcache_src" /FD /c .c{$(INTDIR)}.obj:: $(CPP) @<< @@ -166,7 +166,7 @@ CLEAN : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe -CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\mod_socache_memcache_src" /FD /EHsc /c +CPP_PROJ=/nologo /MDd /W3 /Zi /Od /I "../../srclib/apr-util/include" /I "../../srclib/apr/include" /I "../../include" /I "../generators" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\mod_socache_memcache_src" /FD /EHsc /c .c{$(INTDIR)}.obj:: $(CPP) @<< -- GitLab From 7c7a9f3a77db5cfa03cc7284e4576777eb2f5d12 Mon Sep 17 00:00:00 2001 From: lgentis Date: Sun, 18 Dec 2016 15:01:46 +0000 Subject: [PATCH 125/224] XML update. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774895 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/event.xml.fr | 85 +++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/docs/manual/mod/event.xml.fr b/docs/manual/mod/event.xml.fr index c670463155..95e591ab63 100644 --- a/docs/manual/mod/event.xml.fr +++ b/docs/manual/mod/event.xml.fr @@ -1,7 +1,7 @@ - + @@ -142,6 +142,89 @@ propose le MPM worker, avec l'unique addition de la directive +
    Arrêt de processus en douceur et + utilisation du scoreboard +

    Ce MPM présentait dans le passé des limitations de montée en + puissance qui + provoquaient l'erreur suivante : "scoreboard is full, not at + MaxRequestWorkers". La directive MaxRequestWorkers permet de limiter le + nombre de requêtes pouvant être servies simultanément à un moment donné + ainsi que le nombre de processus autorisés (MaxRequestWorkers / ThreadsPerChild), alors que le + scoreboard représente l'ensemble des processus en cours d'exécution et + l'état de leurs threads de travail. Si le scoreboard est plein + (autrement dit si aucun des threads n'est dans un état inactif) et si le + nombre de requêtes actives servies est inférieur à MaxRequestWorkers, cela signifie que + certains d'entre eux bloquent les nouvelles requêtes qui pourraient être + servies et sont en l'occurrence mises en attente (dans la limite de la + valeur imposée par la directive ListenBacklog). La plupart du temps, ces + threads sont bloqués dans un état d'arrêt en douceur car ils attendent + de terminer leur travail sur une connexion TCP pour s'arrêter et ainsi libérer + une entrée dans le scoreboard (par exemple dans le cas du traitement des + requêtes de longue durée, des clients lents ou des connexions en + keep-alive). Voici deux scénarios courants :

    +
      +
    • Pendant un graceful + restart. Le processus parent demande à tous ses processus + enfants de terminer leur travail et de s'arrêter pendant qu'il + recharge la configuration et lance de nouveaux processus. Si les + processus existants continuent de s'exécuter pendant un certain + temps avant de s'arrêter, le scoreboard sera partiellement occupé + jusqu'à ce que les entrées correspondantes soient libérées. +
    • +
    • Lorsque la charge du serveur diminue suffisamment pour que httpd + commence à stopper certains processus (par exemple pour respecter la + valeur de la directive MaxSpareThreads). Cette situation + est problèmatique car lorsque la charge augmente à nouveau, httpd va + essayer de lancer de nouveaux processus. Si cette situation se + répète, le nombre de processus peut augmenter sensiblement, + aboutissant à un mélange d'anciens processus tentant de s'arrêter et + de nouveaux processus tentant d'effectuer un travail quelconque. +
    • +
    +

    A partir de la version 2.4.24, mpm-event est plus intelligent et peut + traiter les arrêts graceful de manière plus efficace. Voici certaines de + ces améliorations :

    +
      +
    • Utilisation de toutes les entrées du scoreboard dans la limite + de la valeur définie par ServerLimit. Les directives + MaxRequestWorkers et + ThreadsPerChild + permettent de limiter le nombre de processus actifs, alors que la + directive ServerLimit + prend aussi en compte les proccessus en arrêt graceful pour + permettre l'utilisation d'entrées supplémentaires du scoreboard en + cas de besoin. L'idée consiste à utiliser ServerLimit pour indiquer à httpd + conbien de processus supplémentaires seront tolérés avant + d'atteindre les limites imposées par les ressources du système. +
    • +
    • Les processus en arrêt graceful doivent fermer leurs connexions + en keep-alive.
    • +
    • Lors d'un arrêt graceful, s'il y a plus de threads de travail en + cours d'exécution que de connexions ouvertes pour un processus + donné, ces threads sont arrêtés afin de libérer les ressources plus + vite (ce qui peut s'avérer nécessaire pour lancer de nouveaux + processus).
    • +
    • Si le scoreboard est plein, empêche d'arrêter d'autres processus + en mode graceful afin de réduire la charge jusqu'à ce que tous les + anciens processus soient arrêtés (sinon la situation empirerait lors + d'une remontée en charge).
    • +
    +

    Le comportement décrit dans le dernier point est bien visible via + mod_status dans la table des connexions avec les deux + nouvelles colonnes "Slot" et "Stopping". La première indique le PID et + la seconde si le processus est en cours d'arrêt ou non ; l'état + supplémentaire "Yes (old gen)" indique un processus encore en exécution + après un redémarrage graceful.

    +
    +
    Limitations

    La gestion améliorée des connexions peut ne pas fonctionner pour certains filtres de connexion qui se sont déclarés eux-mêmes -- GitLab From d9e7939b65a965f5758360bfa792bb0eca704178 Mon Sep 17 00:00:00 2001 From: lgentis Date: Sun, 18 Dec 2016 15:02:54 +0000 Subject: [PATCH 126/224] Rebuild. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1774896 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/event.html.fr | 77 +++++++++++++++++++++++++++++++++- docs/manual/mod/event.xml.meta | 2 +- 2 files changed, 76 insertions(+), 3 deletions(-) diff --git a/docs/manual/mod/event.html.fr b/docs/manual/mod/event.html.fr index 6080551dd1..192c0413d8 100644 --- a/docs/manual/mod/event.html.fr +++ b/docs/manual/mod/event.html.fr @@ -29,8 +29,6 @@

    Langues Disponibles:  en  |  fr 

    -
    Cette traduction peut tre prime. Vrifiez la version - anglaise pour les changements rcents.
    Description:Limitation de la bande passante pour les clients
    Statut:Extension
    IdentificateurdeModule:ratelimit_module
    @@ -179,6 +177,81 @@ propose le MPM workerArrt de processus en douceur et + utilisation du scoreboard +

    Ce MPM prsentait dans le pass des limitations de monte en + puissance qui + provoquaient l'erreur suivante : "scoreboard is full, not at + MaxRequestWorkers". La directive MaxRequestWorkers permet de limiter le + nombre de requtes pouvant tre servies simultanment un moment donn + ainsi que le nombre de processus autoriss (MaxRequestWorkers / ThreadsPerChild), alors que le + scoreboard reprsente l'ensemble des processus en cours d'excution et + l'tat de leurs threads de travail. Si le scoreboard est plein + (autrement dit si aucun des threads n'est dans un tat inactif) et si le + nombre de requtes actives servies est infrieur MaxRequestWorkers, cela signifie que + certains d'entre eux bloquent les nouvelles requtes qui pourraient tre + servies et sont en l'occurrence mises en attente (dans la limite de la + valeur impose par la directive ListenBacklog). La plupart du temps, ces + threads sont bloqus dans un tat d'arrt en douceur car ils attendent + de terminer leur travail sur une connexion TCP pour s'arrter et ainsi librer + une entre dans le scoreboard (par exemple dans le cas du traitement des + requtes de longue dure, des clients lents ou des connexions en + keep-alive). Voici deux scnarios courants :

    +
      +
    • Pendant un graceful + restart. Le processus parent demande tous ses processus + enfants de terminer leur travail et de s'arrter pendant qu'il + recharge la configuration et lance de nouveaux processus. Si les + processus existants continuent de s'excuter pendant un certain + temps avant de s'arrter, le scoreboard sera partiellement occup + jusqu' ce que les entres correspondantes soient libres. +
    • +
    • Lorsque la charge du serveur diminue suffisamment pour que httpd + commence stopper certains processus (par exemple pour respecter la + valeur de la directive MaxSpareThreads). Cette situation + est problmatique car lorsque la charge augmente nouveau, httpd va + essayer de lancer de nouveaux processus. Si cette situation se + rpte, le nombre de processus peut augmenter sensiblement, + aboutissant un mlange d'anciens processus tentant de s'arrter et + de nouveaux processus tentant d'effectuer un travail quelconque. +
    • +
    +

    A partir de la version 2.4.24, mpm-event est plus intelligent et peut + traiter les arrts graceful de manire plus efficace. Voici certaines de + ces amliorations :

    +
      +
    • Utilisation de toutes les entres du scoreboard dans la limite + de la valeur dfinie par ServerLimit. Les directives + MaxRequestWorkers et + ThreadsPerChild + permettent de limiter le nombre de processus actifs, alors que la + directive ServerLimit + prend aussi en compte les proccessus en arrt graceful pour + permettre l'utilisation d'entres supplmentaires du scoreboard en + cas de besoin. L'ide consiste utiliser ServerLimit pour indiquer httpd + conbien de processus supplmentaires seront tolrs avant + d'atteindre les limites imposes par les ressources du systme. +
    • +
    • Les processus en arrt graceful doivent fermer leurs connexions + en keep-alive.
    • +
    • Lors d'un arrt graceful, s'il y a plus de threads de travail en + cours d'excution que de connexions ouvertes pour un processus + donn, ces threads sont arrts afin de librer les ressources plus + vite (ce qui peut s'avrer ncessaire pour lancer de nouveaux + processus).
    • +
    • Si le scoreboard est plein, empche d'arrter d'autres processus + en mode graceful afin de rduire la charge jusqu' ce que tous les + anciens processus soient arrts (sinon la situation empirerait lors + d'une remonte en charge).
    • +
    +

    Le comportement dcrit dans le dernier point est bien visible via + mod_status dans la table des connexions avec les deux + nouvelles colonnes "Slot" et "Stopping". La premire indique le PID et + la seconde si le processus est en cours d'arrt ou non ; l'tat + supplmentaire "Yes (old gen)" indique un processus encore en excution + aprs un redmarrage graceful.

    + +

    Limitations

    La gestion amliore des connexions peut ne pas fonctionner pour certains filtres de connexion qui se sont dclars eux-mmes diff --git a/docs/manual/mod/event.xml.meta b/docs/manual/mod/event.xml.meta index 58ce5cc073..7b7fc287cf 100644 --- a/docs/manual/mod/event.xml.meta +++ b/docs/manual/mod/event.xml.meta @@ -8,6 +8,6 @@ en - fr + fr -- GitLab From 62c4040660162c4d4210a14a4260134bc9feec17 Mon Sep 17 00:00:00 2001 From: Rainer Jung Date: Mon, 19 Dec 2016 20:29:13 +0000 Subject: [PATCH 127/224] Propose. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775172 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/STATUS b/STATUS index 33e5f266f1..ddbaa5ed4f 100644 --- a/STATUS +++ b/STATUS @@ -142,6 +142,12 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: trunk works +1: ylavic, jim + *) mod_proxy_express.c: Silence compiler warning + "111: warning: 'backend' may be used uninitialized in this function" + trunk patch: http://svn.apache.org/r1741570 + 2.4.x patch: trunk works + +1: rjung + PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From e288c70503d9c8c82b1828a2764f42bb16a1174c Mon Sep 17 00:00:00 2001 From: Rainer Jung Date: Mon, 19 Dec 2016 20:39:06 +0000 Subject: [PATCH 128/224] Propose. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775174 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/STATUS b/STATUS index ddbaa5ed4f..3b8782b94c 100644 --- a/STATUS +++ b/STATUS @@ -148,6 +148,17 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: trunk works +1: rjung + *) mod_ssl: Silence compiler warning + "686: warning: 'ok' may be used uninitialized in + this function" + This is a false positive, because the value of "ok" + will only be used if stapling_get_cached_response() + sets "rsp" to non-NULL in which case it will always + have set "ok". + trunk patch: http://svn.apache.org/1775173 + 2.4.x patch: trunk works + +1: rjung + PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From a4347603bcdb78fc8d58169aae4ae8146415e542 Mon Sep 17 00:00:00 2001 From: Eric Covener Date: Tue, 20 Dec 2016 01:33:53 +0000 Subject: [PATCH 129/224] assign logno from trunk git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775197 13f79535-47bb-0310-9956-ffa450edef68 --- server/mpm/event/event.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/mpm/event/event.c b/server/mpm/event/event.c index c133c1a0a3..2c55c5bbf2 100644 --- a/server/mpm/event/event.c +++ b/server/mpm/event/event.c @@ -2660,7 +2660,7 @@ static void perform_idle_server_maintenance(int child_bucket, int num_buckets) retained->idle_spawn_rate[child_bucket] = 1; } else if (free_length == 0) { /* scoreboard is full, can't fork */ - ap_log_error(APLOG_MARK, APLOG_ERR, 0, ap_server_conf, APLOGNO() + ap_log_error(APLOG_MARK, APLOG_ERR, 0, ap_server_conf, APLOGNO(03490) "scoreboard is full, not at MaxRequestWorkers." "Increase ServerLimit."); retained->idle_spawn_rate[child_bucket] = 1; -- GitLab From ac51a2a85df9a8f02429ddd5e844ec0b58673392 Mon Sep 17 00:00:00 2001 From: Eric Covener Date: Tue, 20 Dec 2016 03:40:16 +0000 Subject: [PATCH 130/224] ebcdic fix git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775200 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/STATUS b/STATUS index 3b8782b94c..b19eb7c409 100644 --- a/STATUS +++ b/STATUS @@ -159,6 +159,11 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: trunk works +1: rjung + *) core: EBCDIC fix for strict host checking. + trunk patch: http://svn.apache.org/r1775199 + 2.4.x patch: trunk work + CHANGES + +1: covener + PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From 8db0cf22001edbb47fec62bdebb17419f5c1a48d Mon Sep 17 00:00:00 2001 From: Eric Covener Date: Tue, 20 Dec 2016 03:40:35 +0000 Subject: [PATCH 131/224] update viewvc shortcut git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775201 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STATUS b/STATUS index b19eb7c409..be0ddf2bcc 100644 --- a/STATUS +++ b/STATUS @@ -155,7 +155,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: will only be used if stapling_get_cached_response() sets "rsp" to non-NULL in which case it will always have set "ok". - trunk patch: http://svn.apache.org/1775173 + trunk patch: http://svn.apache.org/r1775173 2.4.x patch: trunk works +1: rjung -- GitLab From 4267b3fff15e3d1113cc6e757ce79484b7fab8fc Mon Sep 17 00:00:00 2001 From: Ruediger Pluem Date: Tue, 20 Dec 2016 09:05:36 +0000 Subject: [PATCH 132/224] * Add proposal git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775233 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/STATUS b/STATUS index be0ddf2bcc..4d225e7b51 100644 --- a/STATUS +++ b/STATUS @@ -164,6 +164,13 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: trunk work + CHANGES +1: covener + *) mod_http: Optimize bad headers handling workflow + Trunk version of patch: + http://svn.apache.org/r1775195 + Backport version for 2.4.x of patch: + Trunk version of patch works + +1: rpluem, + PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From 789030d68fdd65127c4d4be42264fc8b71aad267 Mon Sep 17 00:00:00 2001 From: Eric Covener Date: Wed, 21 Dec 2016 16:21:09 +0000 Subject: [PATCH 133/224] fcgi patch git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775488 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/STATUS b/STATUS index 4d225e7b51..9abcdfa653 100644 --- a/STATUS +++ b/STATUS @@ -171,6 +171,10 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: Trunk version of patch works +1: rpluem, + *) util_fcgi: Fix crash with empty-valued envvars. PR60275 + trunk patch: http://svn.apache.org/r1775487. + 2.4.x patch: trunk works + +1 covener PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From ba5f65be4548822fd0d87bad6d9cbac726a12a9a Mon Sep 17 00:00:00 2001 From: Eric Covener Date: Thu, 22 Dec 2016 14:23:47 +0000 Subject: [PATCH 134/224] axe the check entirely git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775666 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/STATUS b/STATUS index 9abcdfa653..f6c86c043a 100644 --- a/STATUS +++ b/STATUS @@ -159,9 +159,10 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: trunk works +1: rjung - *) core: EBCDIC fix for strict host checking. + *) core: remove isascci check before narrower checks in vhost checking trunk patch: http://svn.apache.org/r1775199 - 2.4.x patch: trunk work + CHANGES + http://svn.apache.org/r1775664 + 2.4.x patch: trunk works + CHANGES +1: covener *) mod_http: Optimize bad headers handling workflow -- GitLab From 8a120f6070cd4e62f1e498a711510bd1eb50a88f Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Thu, 22 Dec 2016 14:55:15 +0000 Subject: [PATCH 135/224] solid morning... votes git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775670 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/STATUS b/STATUS index f6c86c043a..646048a15a 100644 --- a/STATUS +++ b/STATUS @@ -146,7 +146,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: "111: warning: 'backend' may be used uninitialized in this function" trunk patch: http://svn.apache.org/r1741570 2.4.x patch: trunk works - +1: rjung + +1: rjung, jim *) mod_ssl: Silence compiler warning "686: warning: 'ok' may be used uninitialized in @@ -157,25 +157,25 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: have set "ok". trunk patch: http://svn.apache.org/r1775173 2.4.x patch: trunk works - +1: rjung + +1: rjung, jim *) core: remove isascci check before narrower checks in vhost checking trunk patch: http://svn.apache.org/r1775199 http://svn.apache.org/r1775664 2.4.x patch: trunk works + CHANGES - +1: covener + +1: covener, jim *) mod_http: Optimize bad headers handling workflow Trunk version of patch: http://svn.apache.org/r1775195 Backport version for 2.4.x of patch: Trunk version of patch works - +1: rpluem, + +1: rpluem, jim *) util_fcgi: Fix crash with empty-valued envvars. PR60275 trunk patch: http://svn.apache.org/r1775487. 2.4.x patch: trunk works - +1 covener + +1 covener, jim PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From f7a21cd454e5aa8cf7b42d471af100ee5ed4f610 Mon Sep 17 00:00:00 2001 From: Eric Covener Date: Thu, 22 Dec 2016 23:05:24 +0000 Subject: [PATCH 136/224] propose ext_filter fix git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775771 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/STATUS b/STATUS index 646048a15a..8e6e5ed43a 100644 --- a/STATUS +++ b/STATUS @@ -177,6 +177,12 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: trunk works +1 covener, jim + *) ext_filter: Don't eat error buckets. PR60375 + trunk patch: http://svn.apache.org/r1775770 + 2.4 patch: trunk works + +1 covener + + PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From f2a66d4f81ff21aef70fc7b45db579d21c0941db Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Thu, 22 Dec 2016 23:36:36 +0000 Subject: [PATCH 137/224] Propose. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775777 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/STATUS b/STATUS index 8e6e5ed43a..6d60be7167 100644 --- a/STATUS +++ b/STATUS @@ -182,6 +182,14 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4 patch: trunk works +1 covener + *) mod_proxy_{ajp,fcgi}: Fix a possible crash when reusing an established + backend connection, happening with LogLevel trace2 or higher configured, + or at any log level with compilers not detected as C99 compliant (e.g. + MSVC on Windows). + trunk patch: http://svn.apache.org/r1775775 + 2.4 patch: trunk works (modulo CHANGES) + +1: ylavic + PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From 8e869d06a0c116587291c5be0c9227e32aaf64aa Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Thu, 22 Dec 2016 23:40:36 +0000 Subject: [PATCH 138/224] Vote, Promote. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775778 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 55 +++++++++++++++++++++++++++---------------------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/STATUS b/STATUS index 6d60be7167..b930697a84 100644 --- a/STATUS +++ b/STATUS @@ -119,34 +119,11 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - - -PATCHES PROPOSED TO BACKPORT FROM TRUNK: - [ New proposals should be added at the end of the list ] - - *) mod_proxy, mod_ssl: Handle SSLProxy* directives in sections, - allowing per backend TLS configuration. - trunk patch: http://svn.apache.org/r1740928 - http://svn.apache.org/r1740960 - http://svn.apache.org/r1740967 - http://svn.apache.org/r1740987 - http://svn.apache.org/r1740998 - http://svn.apache.org/r1742697 - http://svn.apache.org/r1756976 - 2.4.x patch: http://home.apache.org/~ylavic/patches/httpd-2.4.x-r1740928_and_co.patch - +1: ylavic - - *) event: close a race condition where we might re-enable listeners while they - are already or about to be closed. - trunk patch: http://svn.apache.org/r1774541 - 2.4.x patch: trunk works - +1: ylavic, jim - *) mod_proxy_express.c: Silence compiler warning "111: warning: 'backend' may be used uninitialized in this function" trunk patch: http://svn.apache.org/r1741570 2.4.x patch: trunk works - +1: rjung, jim + +1: rjung, jim, ylavic *) mod_ssl: Silence compiler warning "686: warning: 'ok' may be used uninitialized in @@ -157,20 +134,42 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: have set "ok". trunk patch: http://svn.apache.org/r1775173 2.4.x patch: trunk works - +1: rjung, jim + +1: rjung, jim, ylavic *) core: remove isascci check before narrower checks in vhost checking trunk patch: http://svn.apache.org/r1775199 http://svn.apache.org/r1775664 2.4.x patch: trunk works + CHANGES - +1: covener, jim + +1: covener, jim, ylavic *) mod_http: Optimize bad headers handling workflow Trunk version of patch: http://svn.apache.org/r1775195 Backport version for 2.4.x of patch: Trunk version of patch works - +1: rpluem, jim + +1: rpluem, jim, ylavic + + +PATCHES PROPOSED TO BACKPORT FROM TRUNK: + [ New proposals should be added at the end of the list ] + + *) mod_proxy, mod_ssl: Handle SSLProxy* directives in sections, + allowing per backend TLS configuration. + trunk patch: http://svn.apache.org/r1740928 + http://svn.apache.org/r1740960 + http://svn.apache.org/r1740967 + http://svn.apache.org/r1740987 + http://svn.apache.org/r1740998 + http://svn.apache.org/r1742697 + http://svn.apache.org/r1756976 + 2.4.x patch: http://home.apache.org/~ylavic/patches/httpd-2.4.x-r1740928_and_co.patch + +1: ylavic + + *) event: close a race condition where we might re-enable listeners while they + are already or about to be closed. + trunk patch: http://svn.apache.org/r1774541 + 2.4.x patch: trunk works + +1: ylavic, jim *) util_fcgi: Fix crash with empty-valued envvars. PR60275 trunk patch: http://svn.apache.org/r1775487. @@ -180,7 +179,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: *) ext_filter: Don't eat error buckets. PR60375 trunk patch: http://svn.apache.org/r1775770 2.4 patch: trunk works - +1 covener + +1: covener, ylavic *) mod_proxy_{ajp,fcgi}: Fix a possible crash when reusing an established backend connection, happening with LogLevel trace2 or higher configured, -- GitLab From 94eee93bad255cee35164d005cfced87f20fed70 Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Fri, 23 Dec 2016 11:41:29 +0000 Subject: [PATCH 139/224] On the 2.4.x branch: Merge r1775813 from trunk: Fix mod_h2/github issue #126: correct lifetime of data sent on temp pools * modules/http2/h2_bucket_beam.c - ignore send pools that are sub-pools of the existing one - added h2_beam_send_from() to allow explicit registering of the correct pool for the sending * modules/http2/h2_bucket_beam.h - add prototype for h2_beam_send_from() * modules/http2/h2_mplx.c - adding logging of output beam state * modules/http2/h2_stream.c - register stream pool for sending data on input beam * modules/http2/h2_task.c - register task pool on output beam on creation - adding trace logging * modules/http2/h2_proxy_session.c - fixing a type in a comment while we're at it git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775816 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 4 ++++ modules/http2/h2_bucket_beam.c | 25 ++++++++++++++++++++++++- modules/http2/h2_bucket_beam.h | 7 +++++++ modules/http2/h2_mplx.c | 15 ++++++++++----- modules/http2/h2_proxy_session.c | 2 +- modules/http2/h2_stream.c | 1 + modules/http2/h2_task.c | 24 +++++++++++++++++++++++- 7 files changed, 70 insertions(+), 8 deletions(-) diff --git a/CHANGES b/CHANGES index ffaf8c4b3a..4cae328cae 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,10 @@ Changes with Apache 2.4.26 + *) mod_http2: fixes https://github.com/icing/mod_h2/issues/126 e.g. beam + bucket lifetime handling when data is sent over temporary pools. + [Stefan Eissing] + Changes with Apache 2.4.25 *) Fix some build issues related to various modules. diff --git a/modules/http2/h2_bucket_beam.c b/modules/http2/h2_bucket_beam.c index 9b9c3b3a2f..3d78a7937d 100644 --- a/modules/http2/h2_bucket_beam.c +++ b/modules/http2/h2_bucket_beam.c @@ -461,6 +461,12 @@ static void beam_set_send_pool(h2_bucket_beam *beam, apr_pool_t *pool) { /* if the beam owner is the receiver, monitor sender pool lifetime */ if (beam->owner == H2_BEAM_OWNER_RECV && beam->send_pool != pool) { + if (beam->send_pool && pool + && apr_pool_is_ancestor(beam->send_pool, pool)) { + /* when sender uses sub-pools to transmit data, stick + * to the lifetime of the pool we already have. */ + return; + } if (beam->send_pool) { apr_pool_cleanup_kill(beam->send_pool, beam, beam_send_cleanup); } @@ -620,6 +626,8 @@ void h2_beam_abort(h2_bucket_beam *beam) r_purge_sent(beam); h2_blist_cleanup(&beam->send_list); report_consumption(beam, 0); + ap_log_perror(APLOG_MARK, APLOG_WARNING, 0, beam->send_pool, + "h2_beam(%d-%s): aborted", beam->id, beam->tag); } if (beam->m_cond) { apr_thread_cond_broadcast(beam->m_cond); @@ -799,6 +807,17 @@ static apr_status_t append_bucket(h2_bucket_beam *beam, return APR_SUCCESS; } +void h2_beam_send_from(h2_bucket_beam *beam, apr_pool_t *p) +{ + h2_beam_lock bl; + /* Called from the red thread to add buckets to the beam */ + if (enter_yellow(beam, &bl) == APR_SUCCESS) { + r_purge_sent(beam); + beam_set_send_pool(beam, p); + leave_yellow(beam, &bl); + } +} + apr_status_t h2_beam_send(h2_bucket_beam *beam, apr_bucket_brigade *red_brigade, apr_read_type_e block) @@ -809,8 +828,10 @@ apr_status_t h2_beam_send(h2_bucket_beam *beam, /* Called from the red thread to add buckets to the beam */ if (enter_yellow(beam, &bl) == APR_SUCCESS) { + ap_log_perror(APLOG_MARK, APLOG_WARNING, 0, beam->send_pool, + "h2_beam(%d-%s): send", beam->id, beam->tag); r_purge_sent(beam); - if (red_brigade) { + if (red_brigade && !beam->send_pool) { beam_set_send_pool(beam, red_brigade->p); } @@ -850,6 +871,8 @@ apr_status_t h2_beam_receive(h2_bucket_beam *beam, /* Called from the green thread to take buckets from the beam */ if (enter_yellow(beam, &bl) == APR_SUCCESS) { transfer: + ap_log_perror(APLOG_MARK, APLOG_WARNING, 0, beam->send_pool, + "h2_beam(%d-%s): receive", beam->id, beam->tag); if (beam->aborted) { if (beam->recv_buffer && !APR_BRIGADE_EMPTY(beam->recv_buffer)) { apr_brigade_cleanup(beam->recv_buffer); diff --git a/modules/http2/h2_bucket_beam.h b/modules/http2/h2_bucket_beam.h index fc6772be3f..39fd476c20 100644 --- a/modules/http2/h2_bucket_beam.h +++ b/modules/http2/h2_bucket_beam.h @@ -254,6 +254,13 @@ apr_status_t h2_beam_send(h2_bucket_beam *beam, apr_bucket_brigade *bb, apr_read_type_e block); +/** + * Register the pool from which future buckets are send. This defines + * the lifetime of the buckets, e.g. the pool should not be cleared/destroyed + * until the data is no longer needed (or has been received). + */ +void h2_beam_send_from(h2_bucket_beam *beam, apr_pool_t *p); + /** * Receive buckets from the beam into the given brigade. Will return APR_EOF * when reading past an EOS bucket. Reads can be blocking until data is diff --git a/modules/http2/h2_mplx.c b/modules/http2/h2_mplx.c index dd9c563ac3..5823bd8e54 100644 --- a/modules/http2/h2_mplx.c +++ b/modules/http2/h2_mplx.c @@ -53,8 +53,8 @@ static void h2_beam_log(h2_bucket_beam *beam, int id, const char *msg, apr_size_t off = 0; off += apr_snprintf(buffer+off, H2_ALEN(buffer)-off, "cl=%d, ", beam->closed); - off += h2_util_bl_print(buffer+off, H2_ALEN(buffer)-off, "red", ", ", &beam->send_list); - off += h2_util_bb_print(buffer+off, H2_ALEN(buffer)-off, "green", ", ", beam->recv_buffer); + off += h2_util_bl_print(buffer+off, H2_ALEN(buffer)-off, "to_send", ", ", &beam->send_list); + off += h2_util_bb_print(buffer+off, H2_ALEN(buffer)-off, "recv_buffer", ", ", beam->recv_buffer); off += h2_util_bl_print(buffer+off, H2_ALEN(buffer)-off, "hold", ", ", &beam->hold_list); off += h2_util_bl_print(buffer+off, H2_ALEN(buffer)-off, "purge", "", &beam->purge_list); @@ -703,9 +703,14 @@ static apr_status_t out_open(h2_mplx *m, int stream_id, h2_bucket_beam *beam) return APR_ECONNABORTED; } - ap_log_cerror(APLOG_MARK, APLOG_TRACE1, status, m->c, - "h2_mplx(%s): out open", task->id); - + if (APLOGctrace2(m->c)) { + h2_beam_log(beam, stream_id, "out_open", m->c, APLOG_TRACE2); + } + else { + ap_log_cerror(APLOG_MARK, APLOG_TRACE1, status, m->c, + "h2_mplx(%s): out open", task->id); + } + h2_beam_on_consumed(stream->output, stream_output_consumed, task); h2_beam_on_produced(stream->output, output_produced, m); beamed_count = h2_beam_get_files_beamed(stream->output); diff --git a/modules/http2/h2_proxy_session.c b/modules/http2/h2_proxy_session.c index 25d1eb3d18..1dd2a418dd 100644 --- a/modules/http2/h2_proxy_session.c +++ b/modules/http2/h2_proxy_session.c @@ -344,7 +344,7 @@ static void h2_proxy_stream_end_headers_out(h2_proxy_stream *stream) /* If USE_CANONICAL_NAME_OFF was configured for the proxy virtual host, * then the server name returned by ap_get_server_name() is the - * origin server name (which does make too much sense with Via: headers) + * origin server name (which doesn't make sense with Via: headers) * so we use the proxy vhost's name instead. */ if (server_name == stream->r->hostname) { diff --git a/modules/http2/h2_stream.c b/modules/http2/h2_stream.c index 3f309492f1..dcbaa23f51 100644 --- a/modules/http2/h2_stream.c +++ b/modules/http2/h2_stream.c @@ -203,6 +203,7 @@ h2_stream *h2_stream_open(int id, apr_pool_t *pool, h2_session *session, stream->can_be_cleaned = 1; h2_beam_create(&stream->input, pool, id, "input", H2_BEAM_OWNER_SEND, 0); + h2_beam_send_from(stream->input, stream->pool); h2_beam_create(&stream->output, pool, id, "output", H2_BEAM_OWNER_RECV, 0); set_state(stream, H2_STREAM_ST_OPEN); diff --git a/modules/http2/h2_task.c b/modules/http2/h2_task.c index 1419aab551..b47300d835 100644 --- a/modules/http2/h2_task.c +++ b/modules/http2/h2_task.c @@ -64,6 +64,24 @@ static void H2_TASK_OUT_LOG(int lvl, h2_task *task, apr_bucket_brigade *bb, } } +static void h2_beam_log(h2_bucket_beam *beam, int id, const char *msg, + conn_rec *c, int level) +{ + if (beam && APLOG_C_IS_LEVEL(c,level)) { + char buffer[2048]; + apr_size_t off = 0; + + off += apr_snprintf(buffer+off, H2_ALEN(buffer)-off, "cl=%d, ", beam->closed); + off += h2_util_bl_print(buffer+off, H2_ALEN(buffer)-off, "red", ", ", &beam->send_list); + off += h2_util_bb_print(buffer+off, H2_ALEN(buffer)-off, "green", ", ", beam->recv_buffer); + off += h2_util_bl_print(buffer+off, H2_ALEN(buffer)-off, "hold", ", ", &beam->hold_list); + off += h2_util_bl_print(buffer+off, H2_ALEN(buffer)-off, "purge", "", &beam->purge_list); + + ap_log_cerror(APLOG_MARK, level, 0, c, "beam(%ld-%d): %s %s", + c->id, id, msg, buffer); + } +} + /******************************************************************************* * task input handling ******************************************************************************/ @@ -97,9 +115,12 @@ static apr_status_t send_out(h2_task *task, apr_bucket_brigade* bb, int block) apr_brigade_length(bb, 0, &written); H2_TASK_OUT_LOG(APLOG_TRACE2, task, bb, "h2_task send_out"); + h2_beam_log(task->output.beam, task->stream_id, "send_out(before)", task->c, APLOG_TRACE2); /* engines send unblocking */ status = h2_beam_send(task->output.beam, bb, block? APR_BLOCK_READ : APR_NONBLOCK_READ); + h2_beam_log(task->output.beam, task->stream_id, "send_out(after)", task->c, APLOG_TRACE2); + if (APR_STATUS_IS_EAGAIN(status)) { apr_brigade_length(bb, 0, &left); written -= left; @@ -508,9 +529,10 @@ h2_task *h2_task_create(conn_rec *c, int stream_id, const h2_request *req, task->input.beam = input; task->output.beam = output; + h2_beam_send_from(output, task->pool); apr_thread_cond_create(&task->cond, pool); - h2_ctx_create_for(c, task); + return task; } -- GitLab From 948e372d8925197357cb75786bbfce1054763dff Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Fri, 23 Dec 2016 12:11:16 +0000 Subject: [PATCH 140/224] On the 2.4.x branch: mod_http2: version bump after backport * modules/http2/h2_version.h: increased version number git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775822 13f79535-47bb-0310-9956-ffa450edef68 --- modules/http2/h2_version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/http2/h2_version.h b/modules/http2/h2_version.h index 46906d6ec4..7ff9a0c84f 100644 --- a/modules/http2/h2_version.h +++ b/modules/http2/h2_version.h @@ -26,7 +26,7 @@ * @macro * Version number of the http2 module as c string */ -#define MOD_HTTP2_VERSION "1.8.3" +#define MOD_HTTP2_VERSION "1.8.4" /** * @macro @@ -34,7 +34,7 @@ * release. This is a 24 bit number with 8 bits for major number, 8 bits * for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203. */ -#define MOD_HTTP2_VERSION_NUM 0x010803 +#define MOD_HTTP2_VERSION_NUM 0x010804 #endif /* mod_h2_h2_version_h */ -- GitLab From 5d60ca5035e471bea85511a25c201ec30c613ad9 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 23 Dec 2016 12:33:08 +0000 Subject: [PATCH 141/224] Merge r1741570 from trunk: * Silence compiler warning Submitted by: rpluem Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775825 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 8 +------- modules/proxy/mod_proxy_express.c | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/STATUS b/STATUS index b930697a84..84a5a9cf18 100644 --- a/STATUS +++ b/STATUS @@ -35,7 +35,7 @@ Release history: while x.{even}.z versions are Stable/GA releases.] 2.4.26 : In development. - 2.4.25 : Tagged on December 16, 2016. + 2.4.25 : Tagged on December 16, 2016. Released on December 21, 2016. 2.4.24 : Tagged on December 16, 2016, not released. 2.4.23 : Tagged on June 30, 2016. Released on July 05, 2016. 2.4.22 : Tagged on June 20, 2016, not released. @@ -119,12 +119,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) mod_proxy_express.c: Silence compiler warning - "111: warning: 'backend' may be used uninitialized in this function" - trunk patch: http://svn.apache.org/r1741570 - 2.4.x patch: trunk works - +1: rjung, jim, ylavic - *) mod_ssl: Silence compiler warning "686: warning: 'ok' may be used uninitialized in this function" diff --git a/modules/proxy/mod_proxy_express.c b/modules/proxy/mod_proxy_express.c index ec4b94a67d..0f5d604295 100644 --- a/modules/proxy/mod_proxy_express.c +++ b/modules/proxy/mod_proxy_express.c @@ -108,7 +108,7 @@ static int xlate_name(request_rec *r) { int i; const char *name; - char *backend; + char *backend = NULL; apr_dbm_t *db; apr_status_t rv; apr_datum_t key, val; -- GitLab From e3448227e7a6a32efceae9f5ca0ef51d2470e1ab Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 23 Dec 2016 12:33:29 +0000 Subject: [PATCH 142/224] Merge r1775173 from trunk: Silence compiler warning: "686: warning: 'ok' may be used uninitialized in this function" This is a false positive, because the value of "ok" will only be used if stapling_get_cached_response() sets "rsp" to non-NULL in which case it will always have set "ok". Submitted by: rjung Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775826 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 11 ----------- modules/ssl/ssl_util_stapling.c | 2 +- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/STATUS b/STATUS index 84a5a9cf18..d17e99f4d6 100644 --- a/STATUS +++ b/STATUS @@ -119,17 +119,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) mod_ssl: Silence compiler warning - "686: warning: 'ok' may be used uninitialized in - this function" - This is a false positive, because the value of "ok" - will only be used if stapling_get_cached_response() - sets "rsp" to non-NULL in which case it will always - have set "ok". - trunk patch: http://svn.apache.org/r1775173 - 2.4.x patch: trunk works - +1: rjung, jim, ylavic - *) core: remove isascci check before narrower checks in vhost checking trunk patch: http://svn.apache.org/r1775199 http://svn.apache.org/r1775664 diff --git a/modules/ssl/ssl_util_stapling.c b/modules/ssl/ssl_util_stapling.c index 413e40f8b4..0737f43779 100644 --- a/modules/ssl/ssl_util_stapling.c +++ b/modules/ssl/ssl_util_stapling.c @@ -683,7 +683,7 @@ static int get_and_check_cached_response(server_rec *s, modssl_ctx_t *mctx, OCSP_RESPONSE **rsp, BOOL *pok, certinfo *cinf, apr_pool_t *p) { - BOOL ok; + BOOL ok = FALSE; int rv; AP_DEBUG_ASSERT(*rsp == NULL); -- GitLab From 461de2b48ce62507f1790b09450ae716628bf7dc Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 23 Dec 2016 12:34:28 +0000 Subject: [PATCH 143/224] Merge r1775199, r1775664 from trunk: Fix strict Host: header checking on EBCDIC on zOS, isascii() really means 7 bit ascii, but our strings are in ebcdic for 99.95% of the lifetime of the server. remove initial isascii check entirely We are already checking an even narrower set of characters just below. Submitted by: covener Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775827 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 5 ----- server/vhost.c | 5 +---- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/STATUS b/STATUS index d17e99f4d6..0aa7ea6d3a 100644 --- a/STATUS +++ b/STATUS @@ -119,11 +119,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) core: remove isascci check before narrower checks in vhost checking - trunk patch: http://svn.apache.org/r1775199 - http://svn.apache.org/r1775664 - 2.4.x patch: trunk works + CHANGES - +1: covener, jim, ylavic *) mod_http: Optimize bad headers handling workflow Trunk version of patch: diff --git a/server/vhost.c b/server/vhost.c index 1896595653..c4bd846f7d 100644 --- a/server/vhost.c +++ b/server/vhost.c @@ -757,10 +757,7 @@ static apr_status_t strict_hostname_check(request_rec *r, char *host) int is_dotted_decimal = 1, leading_zeroes = 0, dots = 0; for (ch = host; *ch; ch++) { - if (!apr_isascii(*ch)) { - goto bad; - } - else if (apr_isalpha(*ch) || *ch == '-') { + if (apr_isalpha(*ch) || *ch == '-') { is_dotted_decimal = 0; } else if (ch[0] == '.') { -- GitLab From cbd51e27f6dd66b3c7d08f8fddbf70ab24b77dd2 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 23 Dec 2016 12:34:47 +0000 Subject: [PATCH 144/224] Merge r1775195 from trunk: http_header_filter: on check_headers() failure, use AP_FILTER_ERROR and EOC semantics to respectively warn the caller and cleanly terminate the connection afterwards. Suggested by: rpluem Submitted by: ylavic Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775828 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 7 ------ modules/http/http_filters.c | 48 ++++++++++++++++++------------------- 2 files changed, 24 insertions(+), 31 deletions(-) diff --git a/STATUS b/STATUS index 0aa7ea6d3a..bc7e1629f0 100644 --- a/STATUS +++ b/STATUS @@ -120,13 +120,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) mod_http: Optimize bad headers handling workflow - Trunk version of patch: - http://svn.apache.org/r1775195 - Backport version for 2.4.x of patch: - Trunk version of patch works - +1: rpluem, jim, ylavic - PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] diff --git a/modules/http/http_filters.c b/modules/http/http_filters.c index f6a19aef75..595d3c4a80 100644 --- a/modules/http/http_filters.c +++ b/modules/http/http_filters.c @@ -1243,7 +1243,6 @@ AP_DECLARE_NONSTD(int) ap_send_http_trace(request_rec *r) typedef struct header_filter_ctx { int headers_sent; - int headers_error; } header_filter_ctx; AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, @@ -1259,23 +1258,22 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, header_filter_ctx *ctx = f->ctx; const char *ctype; ap_bucket_error *eb = NULL; - apr_bucket *eos = NULL; + apr_status_t rv = APR_SUCCESS; + int recursive_error = 0; AP_DEBUG_ASSERT(!r->main); if (!ctx) { ctx = f->ctx = apr_pcalloc(r->pool, sizeof(header_filter_ctx)); } - if (ctx->headers_sent) { + else if (ctx->headers_sent) { /* Eat body if response must not have one. */ if (r->header_only || r->status == HTTP_NO_CONTENT) { apr_brigade_cleanup(b); return APR_SUCCESS; } } - else if (!ctx->headers_error && !check_headers(r)) { - ctx->headers_error = 1; - } + for (e = APR_BRIGADE_FIRST(b); e != APR_BRIGADE_SENTINEL(b); e = APR_BUCKET_NEXT(e)) @@ -1292,23 +1290,15 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, ap_remove_output_filter(f); return ap_pass_brigade(f->next, b); } - if (ctx->headers_error && APR_BUCKET_IS_EOS(e)) { - eos = e; - } } - if (ctx->headers_error) { - if (!eos) { - /* Eat body until EOS */ - apr_brigade_cleanup(b); - return APR_SUCCESS; - } + if (!ctx->headers_sent && !check_headers(r)) { /* We may come back here from ap_die() below, * so clear anything from this response. */ - ctx->headers_error = 0; apr_table_clear(r->headers_out); apr_table_clear(r->err_headers_out); + apr_brigade_cleanup(b); /* Don't recall ap_die() if we come back here (from its own internal * redirect or error response), otherwise we can end up in infinite @@ -1316,17 +1306,18 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, * empty body (EOS only). */ if (!check_headers_recursion(r)) { - apr_brigade_cleanup(b); ap_die(HTTP_INTERNAL_SERVER_ERROR, r); return AP_FILTER_ERROR; } - APR_BUCKET_REMOVE(eos); - apr_brigade_cleanup(b); - APR_BRIGADE_INSERT_TAIL(b, eos); r->status = HTTP_INTERNAL_SERVER_ERROR; + e = ap_bucket_eoc_create(c->bucket_alloc); + APR_BRIGADE_INSERT_TAIL(b, e); + e = apr_bucket_eos_create(c->bucket_alloc); + APR_BRIGADE_INSERT_TAIL(b, e); r->content_type = r->content_encoding = NULL; r->content_languages = NULL; ap_set_content_length(r, 0); + recursive_error = 1; } else if (eb) { int status; @@ -1339,7 +1330,8 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, if (r->assbackwards) { r->sent_bodyct = 1; ap_remove_output_filter(f); - return ap_pass_brigade(f->next, b); + rv = ap_pass_brigade(f->next, b); + goto out; } /* @@ -1477,12 +1469,15 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, terminate_header(b2); - ap_pass_brigade(f->next, b2); + rv = ap_pass_brigade(f->next, b2); + if (rv != APR_SUCCESS) { + goto out; + } ctx->headers_sent = 1; if (r->header_only || r->status == HTTP_NO_CONTENT) { apr_brigade_cleanup(b); - return APR_SUCCESS; + goto out; } r->sent_bodyct = 1; /* Whatever follows is real body stuff... */ @@ -1500,7 +1495,12 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, * brigade won't be chunked properly. */ ap_remove_output_filter(f); - return ap_pass_brigade(f->next, b); + rv = ap_pass_brigade(f->next, b); +out: + if (recursive_error) { + return AP_FILTER_ERROR; + } + return rv; } /* -- GitLab From 32aea4ec21347916a08c12e27ca34bc3265cacd9 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 23 Dec 2016 12:35:13 +0000 Subject: [PATCH 145/224] vote git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775829 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STATUS b/STATUS index bc7e1629f0..850a2b745f 100644 --- a/STATUS +++ b/STATUS @@ -150,7 +150,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: *) ext_filter: Don't eat error buckets. PR60375 trunk patch: http://svn.apache.org/r1775770 2.4 patch: trunk works - +1: covener, ylavic + +1: covener, ylavic, jim *) mod_proxy_{ajp,fcgi}: Fix a possible crash when reusing an established backend connection, happening with LogLevel trace2 or higher configured, @@ -158,7 +158,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: MSVC on Windows). trunk patch: http://svn.apache.org/r1775775 2.4 patch: trunk works (modulo CHANGES) - +1: ylavic + +1: ylavic, jim PATCHES/ISSUES THAT ARE BEING WORKED -- GitLab From 9c5d542b7d53db1e40f1e1cbf04d3001c25816d0 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 23 Dec 2016 12:35:29 +0000 Subject: [PATCH 146/224] promote git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775830 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/STATUS b/STATUS index 850a2b745f..302ac86d83 100644 --- a/STATUS +++ b/STATUS @@ -119,6 +119,11 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] + *) ext_filter: Don't eat error buckets. PR60375 + trunk patch: http://svn.apache.org/r1775770 + 2.4 patch: trunk works + +1: covener, ylavic, jim + PATCHES PROPOSED TO BACKPORT FROM TRUNK: @@ -147,11 +152,6 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4.x patch: trunk works +1 covener, jim - *) ext_filter: Don't eat error buckets. PR60375 - trunk patch: http://svn.apache.org/r1775770 - 2.4 patch: trunk works - +1: covener, ylavic, jim - *) mod_proxy_{ajp,fcgi}: Fix a possible crash when reusing an established backend connection, happening with LogLevel trace2 or higher configured, or at any log level with compilers not detected as C99 compliant (e.g. -- GitLab From bb24a05d3b645d49fbb5100c777728dbc61545d4 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 23 Dec 2016 12:36:26 +0000 Subject: [PATCH 147/224] Merge r1775770 from trunk: pass along error buckets In 2.4, they are generated by LimitRequestBody failures. trunk no longer uses error buckets in this path, but someone else could. PR60375 Submitted By: Eric Covener,Lubos Uhliarik Committed By: covener Submitted by: covener Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775832 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ STATUS | 6 ------ modules/filters/mod_ext_filter.c | 7 +++++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index 4cae328cae..43ec2edb54 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ Changes with Apache 2.4.26 + *) mod_ext_filter: Don't interfere with "error buckets" issued by other + modules. PR60375. [Eric Covener, Lubos Uhliarik] + *) mod_http2: fixes https://github.com/icing/mod_h2/issues/126 e.g. beam bucket lifetime handling when data is sent over temporary pools. [Stefan Eissing] diff --git a/STATUS b/STATUS index 302ac86d83..2cf13fa5a2 100644 --- a/STATUS +++ b/STATUS @@ -119,12 +119,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - *) ext_filter: Don't eat error buckets. PR60375 - trunk patch: http://svn.apache.org/r1775770 - 2.4 patch: trunk works - +1: covener, ylavic, jim - - PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] diff --git a/modules/filters/mod_ext_filter.c b/modules/filters/mod_ext_filter.c index 9f183f69bc..7aac19d86e 100644 --- a/modules/filters/mod_ext_filter.c +++ b/modules/filters/mod_ext_filter.c @@ -757,6 +757,13 @@ static int ef_unified_filter(ap_filter_t *f, apr_bucket_brigade *bb) break; } + if (AP_BUCKET_IS_ERROR(b)) { + apr_bucket *cpy; + apr_bucket_copy(b, &cpy); + APR_BRIGADE_INSERT_TAIL(bb_tmp, cpy); + break; + } + rv = apr_bucket_read(b, &data, &len, APR_BLOCK_READ); if (rv != APR_SUCCESS) { ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(01463) "apr_bucket_read()"); -- GitLab From 524b8a70794c23a9a1eb83da136e1a8eba68c9de Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Fri, 23 Dec 2016 12:47:06 +0000 Subject: [PATCH 148/224] On the 2.4.x branch: merge of r1775833 from trunk: Cleanup mod_http2 beamer registry on server reload. Fixes PR60510. * modules/http2/h2_bucket_beam.c register cleanup function on installation that NULLs the beamer registry on pool cleanup. Patch by: Pavel Mateja , Stefan Eissing] + *) mod_ext_filter: Don't interfere with "error buckets" issued by other modules. PR60375. [Eric Covener, Lubos Uhliarik] diff --git a/modules/http2/h2_bucket_beam.c b/modules/http2/h2_bucket_beam.c index 3d78a7937d..6d0b04920d 100644 --- a/modules/http2/h2_bucket_beam.c +++ b/modules/http2/h2_bucket_beam.c @@ -153,10 +153,19 @@ const apr_bucket_type_t h2_bucket_type_beam = { ******************************************************************************/ static apr_array_header_t *beamers; - + +static apr_status_t cleanup_beamers(void *dummy) +{ + (void)dummy; + beamers = NULL; + return APR_SUCCESS; +} + void h2_register_bucket_beamer(h2_bucket_beamer *beamer) { if (!beamers) { + apr_pool_cleanup_register(apr_hook_global_pool, NULL, + cleanup_beamers, apr_pool_cleanup_null); beamers = apr_array_make(apr_hook_global_pool, 10, sizeof(h2_bucket_beamer*)); } -- GitLab From cc176ae7a2489100aca24908d99a2a78bf34e15a Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Sat, 24 Dec 2016 10:04:19 +0000 Subject: [PATCH 149/224] On the 2.4.x branch: mod_http2: removing debug logs leftover in previous commit * modules/http2/h2_bucket_beam.c removed log warnings from debug session Modified: httpd/httpd/trunk/modules/http2/h2_bucket_beam.c git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1775945 13f79535-47bb-0310-9956-ffa450edef68 --- modules/http2/h2_bucket_beam.c | 6 ------ modules/http2/h2_version.h | 4 ++-- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/modules/http2/h2_bucket_beam.c b/modules/http2/h2_bucket_beam.c index 6d0b04920d..add3065c97 100644 --- a/modules/http2/h2_bucket_beam.c +++ b/modules/http2/h2_bucket_beam.c @@ -635,8 +635,6 @@ void h2_beam_abort(h2_bucket_beam *beam) r_purge_sent(beam); h2_blist_cleanup(&beam->send_list); report_consumption(beam, 0); - ap_log_perror(APLOG_MARK, APLOG_WARNING, 0, beam->send_pool, - "h2_beam(%d-%s): aborted", beam->id, beam->tag); } if (beam->m_cond) { apr_thread_cond_broadcast(beam->m_cond); @@ -837,8 +835,6 @@ apr_status_t h2_beam_send(h2_bucket_beam *beam, /* Called from the red thread to add buckets to the beam */ if (enter_yellow(beam, &bl) == APR_SUCCESS) { - ap_log_perror(APLOG_MARK, APLOG_WARNING, 0, beam->send_pool, - "h2_beam(%d-%s): send", beam->id, beam->tag); r_purge_sent(beam); if (red_brigade && !beam->send_pool) { beam_set_send_pool(beam, red_brigade->p); @@ -880,8 +876,6 @@ apr_status_t h2_beam_receive(h2_bucket_beam *beam, /* Called from the green thread to take buckets from the beam */ if (enter_yellow(beam, &bl) == APR_SUCCESS) { transfer: - ap_log_perror(APLOG_MARK, APLOG_WARNING, 0, beam->send_pool, - "h2_beam(%d-%s): receive", beam->id, beam->tag); if (beam->aborted) { if (beam->recv_buffer && !APR_BRIGADE_EMPTY(beam->recv_buffer)) { apr_brigade_cleanup(beam->recv_buffer); diff --git a/modules/http2/h2_version.h b/modules/http2/h2_version.h index 7ff9a0c84f..b29a116028 100644 --- a/modules/http2/h2_version.h +++ b/modules/http2/h2_version.h @@ -26,7 +26,7 @@ * @macro * Version number of the http2 module as c string */ -#define MOD_HTTP2_VERSION "1.8.4" +#define MOD_HTTP2_VERSION "1.8.5" /** * @macro @@ -34,7 +34,7 @@ * release. This is a 24 bit number with 8 bits for major number, 8 bits * for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203. */ -#define MOD_HTTP2_VERSION_NUM 0x010804 +#define MOD_HTTP2_VERSION_NUM 0x010805 #endif /* mod_h2_h2_version_h */ -- GitLab From 5f55e920e59075d5b6656807e9db028ca8d7bb9e Mon Sep 17 00:00:00 2001 From: Christophe Jaillet Date: Tue, 27 Dec 2016 08:39:41 +0000 Subject: [PATCH 150/224] Fix old comment from Martijn git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1776091 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/ssl/ssl_intro.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/manual/ssl/ssl_intro.xml b/docs/manual/ssl/ssl_intro.xml index eccf050bc3..ecd6bddfe1 100644 --- a/docs/manual/ssl/ssl_intro.xml +++ b/docs/manual/ssl/ssl_intro.xml @@ -412,7 +412,7 @@ establishing a protocol session.

    -
    Description:Une variante du MPM worker conue pour ne mobiliser des threads que pour les connexions en cours de traitement
    Statut:MPM
    TLS v1.2 Proposed Internet Standard (from IETF) [TLS12]Update of TLS 1.2 deprecating MD5 as hash, and adding incompatibility + Update of TLS 1.1 deprecating MD5 as hash, and adding incompatibility to SSL so it will never negotiate the use of SSLv2.
    -- GitLab From 8a564432e48bb51ef65aed0795307069c451b850 Mon Sep 17 00:00:00 2001 From: Christophe Jaillet Date: Tue, 27 Dec 2016 08:41:59 +0000 Subject: [PATCH 151/224] xforms git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1776093 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/ssl/ssl_intro.html.en | 2 +- docs/manual/ssl/ssl_intro.xml.fr | 2 +- docs/manual/ssl/ssl_intro.xml.ja | 2 +- docs/manual/ssl/ssl_intro.xml.meta | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/manual/ssl/ssl_intro.html.en b/docs/manual/ssl/ssl_intro.html.en index 2d45b28e6b..61361d0c50 100644 --- a/docs/manual/ssl/ssl_intro.html.en +++ b/docs/manual/ssl/ssl_intro.html.en @@ -405,7 +405,7 @@ establishing a protocol session.

    TLS v1.2 Proposed Internet Standard (from IETF) [TLS12] - Update of TLS 1.2 deprecating MD5 as hash, and adding incompatibility + Update of TLS 1.1 deprecating MD5 as hash, and adding incompatibility to SSL so it will never negotiate the use of SSLv2. diff --git a/docs/manual/ssl/ssl_intro.xml.fr b/docs/manual/ssl/ssl_intro.xml.fr index a083b1b502..ea0fa82d0d 100644 --- a/docs/manual/ssl/ssl_intro.xml.fr +++ b/docs/manual/ssl/ssl_intro.xml.fr @@ -1,7 +1,7 @@ - + diff --git a/docs/manual/ssl/ssl_intro.xml.ja b/docs/manual/ssl/ssl_intro.xml.ja index 45467af40c..3ea9154d80 100644 --- a/docs/manual/ssl/ssl_intro.xml.ja +++ b/docs/manual/ssl/ssl_intro.xml.ja @@ -1,7 +1,7 @@ - + -undefMacro +UndefMacro Supprime une macro UndefMacro nom -- GitLab From c5a1c1f1f473457666fb69661cb09d8847e54fe1 Mon Sep 17 00:00:00 2001 From: Christophe Jaillet Date: Tue, 27 Dec 2016 13:17:31 +0000 Subject: [PATCH 153/224] xforms git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1776123 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/mod_macro.html.fr | 16 +++++++++++----- docs/manual/mod/quickreference.html.fr | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/docs/manual/mod/mod_macro.html.fr b/docs/manual/mod/mod_macro.html.fr index a631bc1649..6950af69ab 100644 --- a/docs/manual/mod/mod_macro.html.fr +++ b/docs/manual/mod/mod_macro.html.fr @@ -235,14 +235,20 @@ UndefMacro DirGroup
    top

    Directive UndefMacro

    - - + + -
    Description:Undefine a macro
    Syntaxe:UndefMacro name
    Description:Supprime une macro
    Syntaxe:UndefMacro nom
    Contexte:configuration du serveur, serveur virtuel, rpertoire
    Statut:Base
    Module:mod_macro

    La documentation de cette directive - n'a pas encore t traduite. Veuillez vous reporter la version - en langue anglaise.

    + +

    La directive UndefMacro annule la dfinition + d'une macro qui doit avoir t dfinie auparavant.

    + +
    UndefMacro LocalAccessPolicy
    +UndefMacro RestrictedAccessPolicy
    + + +
    top

    Directive Use

    diff --git a/docs/manual/mod/quickreference.html.fr b/docs/manual/mod/quickreference.html.fr index e4dd114e16..5995acb4fe 100644 --- a/docs/manual/mod/quickreference.html.fr +++ b/docs/manual/mod/quickreference.html.fr @@ -1351,7 +1351,7 @@ traitent les connexions clients - + (RFC 7230 3.1.1) and the HTTP Request Header Fields (RFC 7230 3.2), which are now applied by default or using the Strict option. Due to legacy modules, applications or - custom user-agents which must be deperecated the Unsafe + custom user-agents which must be deprecated the Unsafe option has been added to revert to the legacy behaviors. These rules are applied prior to request processing, so must be configured at the global or default (first) matching virtual host section, by IP/port @@ -2031,7 +2031,7 @@ media type in the HTTP Content-Type header field risks of accepting non-conformant request messages, while RFC 7230 3.5 "Message Parsing Robustness" identify the risks of accepting obscure whitespace and request message formatting. - As of the introduction of this directive, all grammer rules of the + As of the introduction of this directive, all grammar rules of the specification are enforced in the default Strict operating mode, and the strict whitespace suggested by section 3.5 is enforced and cannot be relaxed.

    @@ -2062,7 +2062,7 @@ media type in the HTTP Content-Type header field

    RFC 2616 19.6 "Compatibility With Previous Versions" had encouraged HTTP servers to support legacy HTTP/0.9 requests. RFC 7230 - superceeds this with "The expectation to support HTTP/0.9 requests has + supersedes this with "The expectation to support HTTP/0.9 requests has been removed" and offers additional comments in RFC 7230 Appendix A. The Require1.0 option allows the user to remove support of the default Allow0.9 option's @@ -3816,7 +3816,7 @@ as if 'QualifyRedirectURL ON' was configured.

    TransferLog fichier|pipesvB
    Spcifie l'emplacement d'un fichier journal
    TypesConfig chemin-fichier conf/mime.types sB
    Le chemin du fichier mime.types
    UnDefine nom-variablesC
    Invalide la dfinition d'une variable
    UndefMacro namesvdB
    Undefine a macro
    UndefMacro nomsvdB
    Supprime une macro
    UnsetEnv var-env [var-env] ...svdhB
    Supprime des variables de l'environnement
    Use nom [valeur1 ... valeurN] -- GitLab From b005fd2e22cb5c63c0d9380bd7696e98053fa0c9 Mon Sep 17 00:00:00 2001 From: Luca Toscano Date: Fri, 30 Dec 2016 15:04:08 +0000 Subject: [PATCH 154/224] Propose backport git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1776587 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/STATUS b/STATUS index 2cf13fa5a2..8912ad65f1 100644 --- a/STATUS +++ b/STATUS @@ -154,6 +154,10 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4 patch: trunk works (modulo CHANGES) +1: ylavic, jim + *) mod_proxy_fcgi: Return HTTP 504 rather than 503 in case of proxy timeout. + trunk patch: http://svn.apache.org/r1775858 + 2.4 patch: trunk works (modulo CHANGES) + +1: elukey PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From a612811966dd09c341cc8cebd8b25c2ab544ac6f Mon Sep 17 00:00:00 2001 From: Daniel Ruggeri Date: Fri, 30 Dec 2016 16:22:11 +0000 Subject: [PATCH 155/224] Propose PROXY protocol support git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1776600 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/STATUS b/STATUS index 8912ad65f1..7e64018a1a 100644 --- a/STATUS +++ b/STATUS @@ -159,6 +159,14 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: 2.4 patch: trunk works (modulo CHANGES) +1: elukey + *) mod_remoteip: Add PROXY protocol support + trunk patches: + http://svn.apache.org/r1776575 + http://svn.apache.org/r1776578 (doc fix) + 2.4 patch (includes CHANGES): + http://people.apache.org/~druggeri/patches/RemoteIPProxyProtocolEnable.2.4.x.patch + +1: druggeri + PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From af7e304f5df5a63de653632440cb79226c6c60fc Mon Sep 17 00:00:00 2001 From: Daniel Ruggeri Date: Fri, 30 Dec 2016 16:23:44 +0000 Subject: [PATCH 156/224] Better formatting of proposal git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1776601 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/STATUS b/STATUS index 7e64018a1a..84952e81ab 100644 --- a/STATUS +++ b/STATUS @@ -160,11 +160,10 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: +1: elukey *) mod_remoteip: Add PROXY protocol support - trunk patches: - http://svn.apache.org/r1776575 - http://svn.apache.org/r1776578 (doc fix) + trunk patch: http://svn.apache.org/r1776575 + http://svn.apache.org/r1776578 (doc fix) 2.4 patch (includes CHANGES): - http://people.apache.org/~druggeri/patches/RemoteIPProxyProtocolEnable.2.4.x.patch + http://people.apache.org/~druggeri/patches/RemoteIPProxyProtocolEnable.2.4.x.patch +1: druggeri PATCHES/ISSUES THAT ARE BEING WORKED -- GitLab From ae676bf2ee7168044af93dc064fe332672fafab4 Mon Sep 17 00:00:00 2001 From: Daniel Ruggeri Date: Fri, 30 Dec 2016 19:13:44 +0000 Subject: [PATCH 157/224] Update reference to patch to match shorter name in trunk git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1776627 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STATUS b/STATUS index 84952e81ab..49520d1f96 100644 --- a/STATUS +++ b/STATUS @@ -163,7 +163,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: trunk patch: http://svn.apache.org/r1776575 http://svn.apache.org/r1776578 (doc fix) 2.4 patch (includes CHANGES): - http://people.apache.org/~druggeri/patches/RemoteIPProxyProtocolEnable.2.4.x.patch + http://people.apache.org/~druggeri/patches/RemoteIPProxyProtocol.2.4.x.patch +1: druggeri PATCHES/ISSUES THAT ARE BEING WORKED -- GitLab From 3730afa348f409211fe0dea0314a466ce093f7e6 Mon Sep 17 00:00:00 2001 From: Daniel Ruggeri Date: Fri, 30 Dec 2016 19:28:26 +0000 Subject: [PATCH 158/224] Note additional trunk patch for RemoteIPProxyProtocol git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1776629 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 1 + 1 file changed, 1 insertion(+) diff --git a/STATUS b/STATUS index 49520d1f96..2efaf4a888 100644 --- a/STATUS +++ b/STATUS @@ -162,6 +162,7 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: *) mod_remoteip: Add PROXY protocol support trunk patch: http://svn.apache.org/r1776575 http://svn.apache.org/r1776578 (doc fix) + http://svn.apache.org/r1776627 (shortened name + doc fix) 2.4 patch (includes CHANGES): http://people.apache.org/~druggeri/patches/RemoteIPProxyProtocol.2.4.x.patch +1: druggeri -- GitLab From 2f81aee1f66bc471bef424bfadd05e70da320417 Mon Sep 17 00:00:00 2001 From: Eric Covener Date: Sat, 31 Dec 2016 00:06:56 +0000 Subject: [PATCH 159/224] Looks like this entry was added to the wrong section git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1776663 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/STATUS b/STATUS index 2efaf4a888..e87ac3752b 100644 --- a/STATUS +++ b/STATUS @@ -167,6 +167,18 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: http://people.apache.org/~druggeri/patches/RemoteIPProxyProtocol.2.4.x.patch +1: druggeri + *) mod_auth_digest: Reduce severity from NOTICE to DEBUG this + once-per-restart msg (I guess the concern was that the RNG + could block after this message) + + AH01757: generating secret for digest authentication ... + + trunk patch: This was fixed in trunk as a trivial part of http://svn.apache.org/r1492395 + 2.4.x patch: Just change the loglevel to DEBUG. + +1 covener + + + PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] @@ -258,16 +270,6 @@ PATCHES/ISSUES THAT ARE BEING WORKED (& also, making the structure change with apr-util version means it breaks binary compat across an apr-util upgrade?) - * mod_auth_digest: Reduce severity from NOTICE to DEBUG this - once-per-restart msg (I guess the concern was that the RNG - could block after this message) - - AH01757: generating secret for digest authentication ... - - trunk patch: This was fixed in trunk as a trivial part of http://svn.apache.org/r1492395 - 2.4.x patch: Just change the loglevel to DEBUG. - +1 covener - PATCHES/ISSUES THAT ARE STALLED * core: Add ap_errorlog_provider to make ErrorLog logging modular. This -- GitLab From e500a9037e7a40fe2fc078b8c5d0692ac546739c Mon Sep 17 00:00:00 2001 From: Eric Covener Date: Sat, 31 Dec 2016 00:13:45 +0000 Subject: [PATCH 160/224] propose PR58856 fix git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1776665 13f79535-47bb-0310-9956-ffa450edef68 --- STATUS | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/STATUS b/STATUS index e87ac3752b..967cc4f052 100644 --- a/STATUS +++ b/STATUS @@ -175,9 +175,14 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK: trunk patch: This was fixed in trunk as a trivial part of http://svn.apache.org/r1492395 2.4.x patch: Just change the loglevel to DEBUG. - +1 covener + +1: covener + *) mod_filter: AddOutputFilterByType should use underlying filters type, not just + AP_FTYPE_CONTENT_SET. PR58856 + trunk patch: http://svn.apache.org/r1726705 + 2.4.x patch: trunk works + +1: covener PATCHES/ISSUES THAT ARE BEING WORKED [ New entried should be added at the START of the list ] -- GitLab From d6600e32d9d32391a516323b226b32eac8b4133f Mon Sep 17 00:00:00 2001 From: Luca Toscano Date: Sat, 31 Dec 2016 09:27:48 +0000 Subject: [PATCH 161/224] Fixed some doc typos detected by a user. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sébastien Santoro (dereckson AT espace-win.org) sent a bug report about one typo in core.xml and I executed the aspell tool on the whole file. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1776711 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/core.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/manual/mod/core.xml b/docs/manual/mod/core.xml index 471cb0ad89..932a106f6e 100644 --- a/docs/manual/mod/core.xml +++ b/docs/manual/mod/core.xml @@ -1254,7 +1254,7 @@ EnableSendfile On (RFC 7230 §3.2), which are now applied by default or using the Strict option. Due to legacy modules, applications or - custom user-agents which must be deperecated the Unsafe + custom user-agents which must be deprecated the Unsafe option has been added to revert to the legacy behaviors. These rules are applied prior to request processing, so must be configured at the global or default (first) matching virtual host section, by IP/port @@ -1271,7 +1271,7 @@ EnableSendfile On RFC 7230 §3.5 "Message Parsing Robustness" identify the risks of accepting obscure whitespace and request message formatting. - As of the introduction of this directive, all grammer rules of the + As of the introduction of this directive, all grammar rules of the specification are enforced in the default Strict operating mode, and the strict whitespace suggested by section 3.5 is enforced and cannot be relaxed.

    @@ -1304,7 +1304,7 @@ EnableSendfile On

    RFC 2616 §19.6 "Compatibility With Previous Versions" had encouraged HTTP servers to support legacy HTTP/0.9 requests. RFC 7230 - superceeds this with "The expectation to support HTTP/0.9 requests has + supersedes this with "The expectation to support HTTP/0.9 requests has been removed" and offers additional comments in RFC 7230 Appendix A. The Require1.0 option allows @@ -4848,7 +4848,7 @@ as if 'QualifyRedirectURL ON' was configured. server config -

    HTTP Methods that are not conforming to the relvant RFCs are normally +

    HTTP Methods that are not conforming to the relevant RFCs are normally rejected by request processing in Apache HTTPD. To avoid this, modules can register non-standard HTTP methods they support. The RegisterHttpMethod allows to register such -- GitLab From b5542c8e52f95116f5e9836a10fb28037f0662ed Mon Sep 17 00:00:00 2001 From: Luca Toscano Date: Sat, 31 Dec 2016 09:28:16 +0000 Subject: [PATCH 162/224] Documentation rebuild git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1776712 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/core.html.en | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/manual/mod/core.html.en b/docs/manual/mod/core.html.en index 513efa9948..6da2d4d7d0 100644 --- a/docs/manual/mod/core.html.en +++ b/docs/manual/mod/core.html.en @@ -2017,7 +2017,7 @@ media type in the HTTP Content-Type header field

    Status:Core
    Module:core
    -

    HTTP Methods that are not conforming to the relvant RFCs are normally +

    HTTP Methods that are not conforming to the relevant RFCs are normally rejected by request processing in Apache HTTPD. To avoid this, modules can register non-standard HTTP methods they support. The RegisterHttpMethod allows to register such -- GitLab From 44998a60d1546f251846ad02e5b75378466c457a Mon Sep 17 00:00:00 2001 From: Luca Toscano Date: Sat, 31 Dec 2016 09:31:10 +0000 Subject: [PATCH 163/224] Documentation rebuild - part 2 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1776713 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/mod/core.xml.de | 2 +- docs/manual/mod/core.xml.es | 2 +- docs/manual/mod/core.xml.fr | 2 +- docs/manual/mod/core.xml.ja | 2 +- docs/manual/mod/core.xml.meta | 2 +- docs/manual/mod/core.xml.tr | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/manual/mod/core.xml.de b/docs/manual/mod/core.xml.de index b73e2e6e99..e428f65d9b 100644 --- a/docs/manual/mod/core.xml.de +++ b/docs/manual/mod/core.xml.de @@ -1,7 +1,7 @@ - + + + diff --git a/docs/manual/mod/core.xml.ja b/docs/manual/mod/core.xml.ja index cb18f69809..aa4842435e 100644 --- a/docs/manual/mod/core.xml.ja +++ b/docs/manual/mod/core.xml.ja @@ -1,7 +1,7 @@ - + +