diff --git a/README b/README
index 39bd61d..b30b043 100644
--- a/README
+++ b/README
@@ -17,7 +17,7 @@
 	If-Unmodified-Since, If-Modified-Since, Date, Accept-Encoding,
 	Accept-Language, Accept-Charset, Max-Forwards, If-Match,
 	If-None-Match, Last-Modified, Content-Length, Expires,
-	Content-Language
+	Content-Language, Content-Encoding
 
 Report Bugs
 	Create a ticket on the issue tracking interface of GitHub:
diff --git a/ngx_http_header_inspect.c b/ngx_http_header_inspect.c
index d01bd5a..1eb00f9 100644
--- a/ngx_http_header_inspect.c
+++ b/ngx_http_header_inspect.c
@@ -28,6 +28,7 @@
 static ngx_int_t ngx_header_inspect_parse_languagerange(u_char *data, ngx_uint_t maxlen, ngx_uint_t *len);
 static ngx_int_t ngx_header_inspect_range_header(ngx_header_inspect_loc_conf_t *conf, ngx_log_t *log, ngx_str_t value);
 static ngx_int_t ngx_header_inspect_acceptencoding_header(ngx_header_inspect_loc_conf_t *conf, ngx_log_t *log, ngx_str_t value);
+static ngx_int_t ngx_header_inspect_contentencoding_header(ngx_header_inspect_loc_conf_t *conf, ngx_log_t *log, ngx_str_t value);
 static ngx_int_t ngx_header_inspect_acceptlanguage_header(ngx_header_inspect_loc_conf_t *conf, ngx_log_t *log, ngx_str_t value);
 static ngx_int_t ngx_header_inspect_contentlanguage_header(ngx_header_inspect_loc_conf_t *conf, ngx_log_t *log, ngx_str_t value);
 static ngx_int_t ngx_header_inspect_acceptcharset_header(ngx_header_inspect_loc_conf_t *conf, ngx_log_t *log, ngx_str_t value);
@@ -1123,6 +1124,54 @@
 	return rc;
 }
 
+static ngx_int_t ngx_header_inspect_contentencoding_header(ngx_header_inspect_loc_conf_t *conf, ngx_log_t *log, ngx_str_t value) {
+	ngx_int_t rc = NGX_AGAIN;
+	ngx_uint_t i = 0;
+	ngx_uint_t v;
+
+	if ((value.len == 0) || ((value.len == 1) && (value.data[0] == '*'))) {
+		ngx_log_error(NGX_LOG_ALERT, log, 0, "header_inspect: Content-Encoding header \"%s\" too short", value.data);
+		return NGX_ERROR;
+	}
+
+	while ( i < value.len) {
+		if (value.data[i] == '*') {
+			ngx_log_error(NGX_LOG_ALERT, log, 0, "header_inspect: illegal char at position %d in Content-Encoding header \"%s\"", i, value.data);
+			rc = NGX_ERROR;
+			break;
+		}
+		if (ngx_header_inspect_parse_contentcoding(&(value.data[i]), value.len-i, &v) != NGX_OK) {
+			ngx_log_error(NGX_LOG_ALERT, log, 0, "header_inspect: invalid content-coding at position %d in Content-Encoding header \"%s\"", i, value.data);
+			rc = NGX_ERROR;
+			break;
+		}
+		i += v;
+		if ((value.data[i] == ' ') && (i < value.len)) {
+			i++;
+		}
+		if (i == value.len) {
+			rc = NGX_OK;
+			break;
+		}
+		if (value.data[i] != ',') {
+			ngx_log_error(NGX_LOG_ALERT, log, 0, "header_inspect: illegal char at position %d in Content-Encoding header \"%s\"", i, value.data);
+			rc = NGX_ERROR;
+			break;
+		}
+		i++;
+		if ((value.data[i] == ' ') && (i < value.len)) {
+			i++;
+		}
+	}
+
+	if (rc == NGX_AGAIN) {
+		ngx_log_error(NGX_LOG_ALERT, log, 0, "header_inspect: unexpected end of Content-Encoding header \"%s\"", value.data);
+		rc = NGX_ERROR;
+	}
+
+	return rc;
+
+}
 static ngx_int_t ngx_header_inspect_acceptencoding_header(ngx_header_inspect_loc_conf_t *conf, ngx_log_t *log, ngx_str_t value) {
 	ngx_int_t rc = NGX_AGAIN;
 	ngx_uint_t i = 0;
@@ -1270,6 +1319,11 @@
 					if ((rc != NGX_OK) && conf->block) {
 						return NGX_HTTP_BAD_REQUEST;
 					}
+				} else if ((h[i].key.len == 16) && (ngx_strcmp("Content-Encoding", h[i].key.data) == 0) ) {
+					rc = ngx_header_inspect_contentencoding_header(conf, r->connection->log, h[i].value);
+					if ((rc != NGX_OK) && conf->block) {
+						return NGX_HTTP_BAD_REQUEST;
+					}
 				} else if ((h[i].key.len == 15) && (ngx_strcmp("Accept-Encoding", h[i].key.data) == 0) ) {
 					rc = ngx_header_inspect_acceptencoding_header(conf, r->connection->log, h[i].value);
 					if ((rc != NGX_OK) && conf->block) {