code: private String getCacheKey(HttpServerExchange exchange) {
          String host = null;
  
          HeaderMap headerMap = exchange.getRequestHeaders();
          if (headerMap != null) {
              HeaderValues headerValues = headerMap.get(Header.X_FORWARDED_FOR.toHttpString());
              if (headerValues != null) {
                  host = headerValues.element();
              }
          }
          
          if (StringUtils.isBlank(host)) {
              InetSocketAddress inetSocketAddress = exchange.getSourceAddress();
              if (inetSocketAddress != null) {
                  host = inetSocketAddress.getHostString();
              }
          }
          
          if (StringUtils.isNotBlank(host)) {
              host = host.toLowerCase(Locale.ENGLISH);
          }
          
          String url = exchange.getRequestURL();
          if (StringUtils.isNotBlank(url)) {
              url = url.toLowerCase(Locale.ENGLISH);
          }
          
          return url + host;
      }
docs: Creates a key for used for limit an request containing the
  requested url and the source host
  
  @param exchange The HttpServerExchange
  @return The key url + host