﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	uname	nginx_version
1367	`gzip_static always` doesn't use index.html.gz unless index.html exists	foolip@…		"My config:

{{{
server {
  listen 443 ssl http2 default_server;
  ssl_certificate /etc/letsencrypt/live/html.foolip.org/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/html.foolip.org/privkey.pem;

  add_header Strict-Transport-Security ""max-age=31536000; includeSubDomains; preload"";

  server_name html.foolip.org;

  root /var/www/html.foolip.org;

  gzip_static always;
}
}}}

(This might not match what's currently on html.foolip.org.)

With this config, if /var/www/html.foolip.org/index.html.gz exists but index.html does not, https://html.foolip.org/ is 403 forbidden. Creating an empty index.html makes it work, serving the content from index.html.gz and ignoring the content of index.html, as expected with the gzip_static always config.

Note that the problem does not apply when requesting https://html.foolip.org/index.html or something like https://html.foolip.org/foo.html if only foo.html.gz exists on disk.

Just a guess, but the fact that https://html.foolip.org/ is 403 instead of 404 is significant, perhaps gzip_static hooks into a ""file not found"" phase that's different from what happens if no index file is found. Note that adding ""index index.html"" to the config doesn't change this."	defect	closed	minor		other	1.10.x	invalid			Linux bgsound 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u2 (2017-06-26) x86_64 GNU/Linux	"nginx version: nginx/1.10.3
built with OpenSSL 1.1.0f  25 May 2017
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-2tpxfc/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-2tpxfc/nginx-1.10.3/debian/modules/nginx-auth-pam --add-dynamic-module=/build/nginx-2tpxfc/nginx-1.10.3/debian/modules/nginx-dav-ext-module --add-dynamic-module=/build/nginx-2tpxfc/nginx-1.10.3/debian/modules/nginx-echo --add-dynamic-module=/build/nginx-2tpxfc/nginx-1.10.3/debian/modules/nginx-upstream-fair --add-dynamic-module=/build/nginx-2tpxfc/nginx-1.10.3/debian/modules/ngx_http_substitutions_filter_module"
