diff -urN httpd-2.4.54-orig/modules/proxy/mod_proxy_connect.c httpd-2.4.54/modules/proxy/mod_proxy_connect.c
--- httpd-2.4.54-orig/modules/proxy/mod_proxy_connect.c	2022-05-25 20:49:56 +0900
+++ httpd-2.4.54/modules/proxy/mod_proxy_connect.c	2023-01-28 07:23:09 +0900
@@ -309,8 +309,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 {
@@ -319,9 +321,11 @@
                               "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());
+        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);
@@ -331,7 +335,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.54-orig/modules/proxy/mod_proxy_ftp.c httpd-2.4.54/modules/proxy/mod_proxy_ftp.c
--- httpd-2.4.54-orig/modules/proxy/mod_proxy_ftp.c	2022-02-25 05:43:21 +0900
+++ httpd-2.4.54/modules/proxy/mod_proxy_ftp.c	2023-01-28 07:22:03 +0900
@@ -1896,7 +1896,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.54-orig/server/core.c httpd-2.4.54/server/core.c
--- httpd-2.4.54-orig/server/core.c	2022-06-01 21:31:48 +0900
+++ httpd-2.4.54/server/core.c	2023-01-28 07:22:03 +0900
@@ -3552,7 +3552,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;
 
@@ -3616,6 +3617,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);
     }
@@ -3669,8 +3673,11 @@
     else if (!ap_cstr_casecmp(arg, "Full")) {
         ap_server_tokens = SrvTk_FULL;
     }
+    else if (!strcasecmp(arg, "None")) {
+        ap_server_tokens = SrvTk_NONE;
+    }
     else {
-        return "ServerTokens takes 1 argument: 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', or 'Full'";
+        return "ServerTokens takes 1 argument: 'None', 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', or 'Full'";
     }
 
     return NULL;
@@ -4572,7 +4579,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), "
+  "Determine tokens displayed in the Server: header - None, Min(imal), "
   "Major, Minor, Prod(uctOnly), 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.54-orig/server/util_script.c httpd-2.4.54/server/util_script.c
--- httpd-2.4.54-orig/server/util_script.c	2021-01-20 04:29:43 +0900
+++ httpd-2.4.54/server/util_script.c	2023-01-28 07:22:03 +0900
@@ -245,7 +245,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 */
