diff -urN httpd-2.2.15-orig/modules/http/http_filters.c httpd-2.2.15/modules/http/http_filters.c
--- httpd-2.2.15-orig/modules/http/http_filters.c	2010-02-26 18:32:15 +0900
+++ httpd-2.2.15/modules/http/http_filters.c	2013-01-07 06:31:06 +0900
@@ -926,7 +926,9 @@
         date = apr_palloc(r->pool, APR_RFC822_DATE_LEN);
         ap_recent_rfc822_date(date, r->request_time);
         form_header_field(&h, "Date", date);
-        form_header_field(&h, "Server", ap_get_server_banner());
+        if (*ap_get_server_banner()) {
+            form_header_field(&h, "Server", ap_get_server_banner());
+        }
     }
 
     /* unset so we don't send them again */
diff -urN httpd-2.2.15-orig/modules/proxy/mod_proxy_connect.c httpd-2.2.15/modules/proxy/mod_proxy_connect.c
--- httpd-2.2.15-orig/modules/proxy/mod_proxy_connect.c	2009-11-19 23:07:46 +0900
+++ httpd-2.2.15/modules/proxy/mod_proxy_connect.c	2013-01-07 06:31:06 +0900
@@ -230,9 +230,11 @@
         nbytes = apr_snprintf(buffer, sizeof(buffer),
                   "CONNECT %s HTTP/1.0" CRLF, r->uri);
         apr_socket_send(sock, buffer, &nbytes);
-        nbytes = apr_snprintf(buffer, sizeof(buffer),
-                  "Proxy-agent: %s" CRLF CRLF, ap_get_server_banner());
-        apr_socket_send(sock, buffer, &nbytes);
+        if (*ap_get_server_banner()) {
+            nbytes = apr_snprintf(buffer, sizeof(buffer),
+                      "Proxy-agent: %s" CRLF CRLF, ap_get_server_banner());
+            apr_socket_send(sock, buffer, &nbytes);
+        }
     }
     else {
         ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
@@ -241,17 +243,21 @@
                   "HTTP/1.0 200 Connection Established" CRLF);
         ap_xlate_proto_to_ascii(buffer, nbytes);
         apr_socket_send(client_socket, buffer, &nbytes);
-        nbytes = apr_snprintf(buffer, sizeof(buffer),
-                  "Proxy-agent: %s" CRLF CRLF, ap_get_server_banner());
-        ap_xlate_proto_to_ascii(buffer, nbytes);
-        apr_socket_send(client_socket, 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);
+            apr_socket_send(client_socket, buffer, &nbytes);
+        }
 #if 0
         /* This is safer code, but it doesn't work yet.  I'm leaving it
          * here so that I can fix it later.
          */
         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.2.15-orig/modules/proxy/mod_proxy_ftp.c httpd-2.2.15/modules/proxy/mod_proxy_ftp.c
--- httpd-2.2.15-orig/modules/proxy/mod_proxy_ftp.c	2009-09-15 05:53:28 +0900
+++ httpd-2.2.15/modules/proxy/mod_proxy_ftp.c	2013-01-07 06:31:06 +0900
@@ -1703,7 +1703,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_banner());
+    if (*ap_get_server_banner()) {
+        apr_table_setn(r->headers_out, "Server", ap_get_server_banner());
+    }
 
     /* set content-type */
     if (dirlisting) {
diff -urN httpd-2.2.15-orig/modules/proxy/proxy_util.c httpd-2.2.15/modules/proxy/proxy_util.c
--- httpd-2.2.15-orig/modules/proxy/proxy_util.c	2010-02-16 04:54:41 +0900
+++ httpd-2.2.15/modules/proxy/proxy_util.c	2013-01-07 06:31:06 +0900
@@ -2298,9 +2298,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.2.15-orig/server/core.c httpd-2.2.15/server/core.c
--- httpd-2.2.15-orig/server/core.c	2009-07-03 06:30:36 +0900
+++ httpd-2.2.15/server/core.c	2013-01-07 06:31:31 +0900
@@ -2726,7 +2726,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;
 
@@ -2798,6 +2799,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);
     }
@@ -2848,6 +2852,9 @@
     else if (!strcasecmp(arg, "Prod") || !strcasecmp(arg, "ProductOnly")) {
         ap_server_tokens = SrvTk_PRODUCT_ONLY;
     }
+    else if (!strcasecmp(arg, "None")) {
+        ap_server_tokens = SrvTk_NONE;
+    }
     else {
         ap_server_tokens = SrvTk_FULL;
     }
@@ -3372,7 +3379,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_TAKE1("ServerTokens", set_serv_tokens, NULL, RSRC_CONF,
-  "Determine tokens displayed in the Server: header - Min(imal), OS or Full"),
+  "Determine tokens displayed in the Server: header - None, Min(imal), OS or Full"),
 AP_INIT_TAKE1("LimitRequestLine", set_limit_req_line, NULL, RSRC_CONF,
   "Limit on maximum size of an HTTP request line"),
 AP_INIT_TAKE1("LimitRequestFieldsize", set_limit_req_fieldsize, NULL,
diff -urN httpd-2.2.15-orig/server/util_script.c httpd-2.2.15/server/util_script.c
--- httpd-2.2.15-orig/server/util_script.c	2009-01-12 22:59:56 +0900
+++ httpd-2.2.15/server/util_script.c	2013-01-07 06:31:06 +0900
@@ -223,7 +223,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(r)));
     apr_table_addn(e, "SERVER_ADDR", r->connection->local_ip);  /* Apache */
