Re: как работает gzip_static?

Maxim Dounin mdounin на mdounin.ru
Вс Май 3 21:13:31 UTC 2020


Hello!

On Sun, May 03, 2020 at 05:22:33AM +0300, sergio wrote:

> Есть два файла: test.html и test.html.gz
> 
> Если gzip_static не указана, то отдаётся test.html
> (нет content-encoding=gzip в ff webdeveloper)
> 
> Если написать gzip_static on, то отдаётся test.html.gz
> (content-encoding=gzip в ff webdeveloper)
> 
> 
> 1. Если после этого удалить test.html то nginx отвечает 404, хотя ни
> https://nginx.org/en/docs/http/ngx_http_gzip_static_module.html ни
> https://docs.nginx.com/nginx/admin-guide/web-server/compression/ не
> говорят ни слова, о том, что для этого должны присутствовать ОБА файла.
> 
> По-моему документацию стоит исправить.

Ответ 404 будет тогда и только тогда, когда файл test.html для 
чего-то используется и отсутствует на диске.  В случае, если 
запрос идёт непосредственно к файлу, клиент поддерживает gzip, и 
включён gzip_static - клиенту будет отправлен ответ из 
test.html.gz.

> 2. Так же ngx_http_gzip_static_module.html говорит:
> 
> With the “always” value .. It is useful if there are no uncompressed
> files on the disk anyway
> 
> Но переключние gzip_static с on на anyway при отсутствующем test.html
> ничего не меняет: nginx продолжает отвечать 404.

В случае с "gzip_static always;" меняется ровно одно: становится 
не важно, поддерживает ли клиент gzip, или нет - всегда будет 
отправлен сжатый ответ.  Если вы и в этом случае видите ответ 404, 
то это означает, что до gzip_static дело не доходит, и ответ 404 
отправляется раньше.

Например, так может быть, если у вас в конфиге стоит что-нибудь 
вроде "try_files $uri =404;", то есть существование конкретного 
файла проверяется явно.

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru