id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,uname,nginx_version 1324,add_header always doesn't work when sending HTTP response 451,dkg@…,,"I'm running nginx 1.10.3 on debian stable. I have the following config: {{{ location /http451-example/dangerous.html { error_page 451 /http451-example/blocked-body.html; add_header Link ""; rel=blocked-by"" always; return 451; } }}} however, the `Link` header doesn't appear in the HTTP response. Additionally, i don't see any way to provide a description associated with the numeric response code. I would normally want to see something like [[https://tools.ietf.org/html/rfc7725|HTTP/1.1 451 Unavailable for Legal Reasons]]. This can be tested with: {{{ 0 dkg@alice:~$ wget -S -O/dev/null https://dkg.fifthhorseman.net/http451-example/dangerous.html --2017-07-15 17:17:01-- https://dkg.fifthhorseman.net/http451-example/dangerous.html Resolving dkg.fifthhorseman.net (dkg.fifthhorseman.net)... 162.247.75.118 Connecting to dkg.fifthhorseman.net (dkg.fifthhorseman.net)|162.247.75.118|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 451 Server: nginx/1.10.3 Date: Sat, 15 Jul 2017 15:17:01 GMT Content-Type: text/html Content-Length: 190 Connection: keep-alive ETag: ""596a275f-be"" 2017-07-15 17:17:02 ERROR 451: (no description). 8 dkg@alice:~$ }}} https://nginx.org/en/docs/http/ngx_http_headers_module.html#add_header says: {{{ Adds the specified field to a response header provided that the response code equals 200, 201, 204, 206, 301, 302, 303, 304, 307, or 308. The value can contain variables. There could be several add_header directives. These directives are inherited from the previous level if and only if there are no add_header directives defined on the current level. If the always parameter is specified (1.7.5), the header field will be added regardless of the response code. }}} So i think the ""always"" should trigger header inclusion.",defect,closed,minor,,other,1.10.x,invalid,,,Linux che 4.9.0-3-amd64 #1 SMP Debian 4.9.25-1 (2017-05-02) x86_64 GNU/Linux,"nginx version: nginx/1.10.3 built with OpenSSL 1.1.0d 26 Jan 2017 (running with OpenSSL 1.1.0f 25 May 2017) TLS SNI support enabled configure arguments: --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-F3HeH5/nginx-1.10.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module --add-dynamic-module=/build/nginx-F3HeH5/nginx-1.10.3/debian/modules/nginx-auth-pam --add-dynamic-module=/build/nginx-F3HeH5/nginx-1.10.3/debian/modules/nginx-dav-ext-module --add-dynamic-module=/build/nginx-F3HeH5/nginx-1.10.3/debian/modules/nginx-echo --add-dynamic-module=/build/nginx-F3HeH5/nginx-1.10.3/debian/modules/nginx-upstream-fair --add-dynamic-module=/build/nginx-F3HeH5/nginx-1.10.3/debian/modules/ngx_http_substitutions_filter_module "