diff -urN httpd-2.4.3-orig/modules/proxy/mod_proxy_connect.c httpd-2.4.3/modules/proxy/mod_proxy_connect.c
--- httpd-2.4.3-orig/modules/proxy/mod_proxy_connect.c	2012-07-28 23:40:23 +0900
+++ httpd-2.4.3/modules/proxy/mod_proxy_connect.c	2013-01-07 06:27:39 +0900
@@ -370,8 +370,10 @@
                       "sending the CONNECT request to the remote proxy");
         ap_fprintf(backconn->output_filters, bb,
                    "CONNECT %s HTTP/1.0" CRLF, r->uri);
-        ap_fprintf(backconn->output_filters, bb,
-                   "Proxy-agent: %s" CRLF CRLF, ap_get_server_banner());
+        if (*ap_get_server_banner()) {
+            ap_fprintf(backconn->output_filters, bb,
+                       "Proxy-agent: %s" CRLF CRLF, ap_get_server_banner());
+        }
         ap_fflush(backconn->output_filters, bb);
     }
     else {
@@ -380,11 +382,13 @@
                               "HTTP/1.0 200 Connection Established" CRLF);
         ap_xlate_proto_to_ascii(buffer, nbytes);
         ap_fwrite(c->output_filters, bb, buffer, nbytes);
-        nbytes = apr_snprintf(buffer, sizeof(buffer),
-                              "Proxy-agent: %s" CRLF CRLF,
-                              ap_get_server_banner());
-        ap_xlate_proto_to_ascii(buffer, nbytes);
-        ap_fwrite(c->output_filters, bb, buffer, nbytes);
+        if (*ap_get_server_banner()) {
+            nbytes = apr_snprintf(buffer, sizeof(buffer),
+                                  "Proxy-agent: %s" CRLF CRLF,
+                                  ap_get_server_banner());
+            ap_xlate_proto_to_ascii(buffer, nbytes);
+            ap_fwrite(c->output_filters, bb, buffer, nbytes);
+        }
         ap_fflush(c->output_filters, bb);
 #if 0
         /* This is safer code, but it doesn't work yet.  I'm leaving it
@@ -392,7 +396,9 @@
          */
         r->status = HTTP_OK;
         r->header_only = 1;
-        apr_table_set(r->headers_out, "Proxy-agent: %s", ap_get_server_banner());
+        if (*ap_get_server_banner()) {
+            apr_table_set(r->headers_out, "Proxy-agent: %s", ap_get_server_banner());
+        }
         ap_rflush(r);
 #endif
     }
diff -urN httpd-2.4.3-orig/modules/proxy/mod_proxy_ftp.c httpd-2.4.3/modules/proxy/mod_proxy_ftp.c
--- httpd-2.4.3-orig/modules/proxy/mod_proxy_ftp.c	2012-08-15 05:57:43 +0900
+++ httpd-2.4.3/modules/proxy/mod_proxy_ftp.c	2013-01-07 06:27:39 +0900
@@ -1865,7 +1865,9 @@
 
     apr_rfc822_date(dates, r->request_time);
     apr_table_setn(r->headers_out, "Date", dates);
-    apr_table_setn(r->headers_out, "Server", ap_get_server_description());
+    if (*ap_get_server_banner()) {
+        apr_table_setn(r->headers_out, "Server", ap_get_server_description());
+    }
 
     /* set content-type */
     if (dirlisting) {
diff -urN httpd-2.4.3-orig/modules/proxy/proxy_util.c httpd-2.4.3/modules/proxy/proxy_util.c
--- httpd-2.4.3-orig/modules/proxy/proxy_util.c	2012-08-15 05:57:43 +0900
+++ httpd-2.4.3/modules/proxy/proxy_util.c	2013-01-07 06:27:39 +0900
@@ -2257,9 +2257,11 @@
                                forward->proxy_auth);
     }
     /* Set a reasonable agent and send everything */
-    nbytes += apr_snprintf(buffer + nbytes, sizeof(buffer) - nbytes,
-                           "Proxy-agent: %s" CRLF CRLF,
-                           ap_get_server_banner());
+    if (*ap_get_server_banner()) {
+        nbytes += apr_snprintf(buffer + nbytes, sizeof(buffer) - nbytes,
+                               "Proxy-agent: %s" CRLF CRLF,
+                               ap_get_server_banner());
+    }
     apr_socket_send(backend->sock, buffer, &nbytes);
 
     /* Receive the whole CONNECT response */
diff -urN httpd-2.4.3-orig/server/core.c httpd-2.4.3/server/core.c
--- httpd-2.4.3-orig/server/core.c	2012-08-15 08:59:24 +0900
+++ httpd-2.4.3/server/core.c	2013-01-07 06:28:04 +0900
@@ -3108,7 +3108,8 @@
     SrvTk_MINIMAL,       /* eg: Apache/2.0.41 */
     SrvTk_OS,            /* eg: Apache/2.0.41 (UNIX) */
     SrvTk_FULL,          /* eg: Apache/2.0.41 (UNIX) PHP/4.2.2 FooBar/1.2b */
-    SrvTk_PRODUCT_ONLY  /* eg: Apache */
+    SrvTk_PRODUCT_ONLY,  /* eg: Apache */
+    SrvTk_NONE           /* Omit the Server header entirely. */
 };
 static enum server_token_type ap_server_tokens = SrvTk_FULL;
 
@@ -3172,6 +3173,9 @@
  */
 static void set_banner(apr_pool_t *pconf)
 {
+    if (ap_server_tokens == SrvTk_NONE) {
+        server_banner = "";
+    }
     if (ap_server_tokens == SrvTk_PRODUCT_ONLY) {
         ap_add_version_component(pconf, AP_SERVER_BASEPRODUCT);
     }
@@ -3222,6 +3226,9 @@
     else if (!strcasecmp(arg1, "Prod") || !strcasecmp(arg1, "ProductOnly")) {
         ap_server_tokens = SrvTk_PRODUCT_ONLY;
     }
+    else if (!strcasecmp(arg, "None")) {
+        ap_server_tokens = SrvTk_NONE;
+    }
     else {
         ap_server_tokens = SrvTk_FULL;
     }
@@ -3997,7 +4004,7 @@
 AP_INIT_TAKE1("NameVirtualHost", ap_set_name_virtual_host, NULL, RSRC_CONF,
   "A numeric IP address:port, or the name of a host"),
 AP_INIT_TAKE12("ServerTokens", set_serv_tokens, NULL, RSRC_CONF,
-  "Determine tokens displayed in the Server: header - Min(imal), "
+  "Determine tokens displayed in the Server: header - None, Min(imal), "
   "Major, Minor, Prod, OS or Full"),
 AP_INIT_TAKE1("LimitRequestLine", set_limit_req_line, NULL, RSRC_CONF,
   "Limit on maximum size of an HTTP request line"),
diff -urN httpd-2.4.3-orig/server/util_script.c httpd-2.4.3/server/util_script.c
--- httpd-2.4.3-orig/server/util_script.c	2012-07-22 21:00:22 +0900
+++ httpd-2.4.3/server/util_script.c	2013-01-07 06:27:39 +0900
@@ -228,7 +228,9 @@
 #endif
 
     apr_table_addn(e, "SERVER_SIGNATURE", ap_psignature("", r));
-    apr_table_addn(e, "SERVER_SOFTWARE", ap_get_server_banner());
+    if (*ap_get_server_banner()) {
+        apr_table_addn(e, "SERVER_SOFTWARE", ap_get_server_banner());
+    }
     apr_table_addn(e, "SERVER_NAME",
                    ap_escape_html(r->pool, ap_get_server_name_for_url(r)));
     apr_table_addn(e, "SERVER_ADDR", r->connection->local_ip);  /* Apache */
