Re: Как заставить ngx http gzip static module работать правильно?
Maxim Dounin
mdounin на mdounin.ru
Ср Фев 17 15:07:26 MSK 2010
Hello!
On Tue, Feb 16, 2010 at 05:48:35PM -0500, chs wrote:
> Нужно грузить заранее заархивированные файлы, а если требуемого файла нет, то тогда передвать запрос на бэкенд .
> Но проблема в том, что в моём варианте Content-Encoding: gzip не добавляется и в браузер выводится зазипованный контент
>
> Что я делаю не так?
>
> server {
> .....
> gzip_static on;
>
> location / {
>
> try_files /cache/$uri.gz @test;
gzip_static добавляет '.gz' к URI сам, и только если клиент
поддерживает gzip. Т.е. ему для работы нужно два файла
- обычный и .gz.
try_files в свою очередь тоже меняет uri на соответствующий
найденному файлу.
Т.е. для запроса /file будет так:
1. try_files найдёт /cache/file.gz и поменяет uri на /cache/file.gz
2. gzip_static попытается искать /cache/file.gz.gz, не найдёт и от запроса
откажется
3. static отдаст file.gz
Чтобы всё работало - нужно иметь на диске не-gz файлы и
проверять их существование, как-то так:
location / {
root /path/to/cache;
gzip_static on;
try_files $uri @fallback;
}
либо не использовать try_files, а делать fallback по 404, как-то
так:
location / {
root /path/to/cache;
gzip_static on;
error_page 404 = @fallback;
}
Maxim Dounin
Подробная информация о списке рассылки nginx-ru