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