Nginx try_files и переписать правила для обслуживания файлов кеша html или gzip из определенного места с соответствующими заголовками - PullRequest
0 голосов
/ 05 ноября 2019

У меня проблема с синтаксисом nginx try_files.

У меня есть веб-сайт Wordpress, на котором я написал нижеприведенные правила nginx для чтения файлов * .html и * .gz, и когда эти файлы не найдены, перенаправляются наPHP-FPM.

По какой-то причине, когда nginx обслуживает файл кэша * .gz, он не учитывает этот location ~ /wp-content/cache/supercache.*gz$ для добавления правильных заголовков, а браузер отображает содержимое архива *.gz в формате text/plain, но неtext/html как указано в расположении.

 set $full_cachefile '/wp-content/cache/supercache/$http_host${condition}';

 set $cachefile $full_cachefile${uri}index-https.html;
 set $gzipcachefile $full_cachefile${uri}index-https.html.gz;


        location ~ /wp-content/cache/supercache.*html$ {
                add_header Vary "Accept-Encoding, Cookie";
                add_header Pragma "public";
                add_header Cache-Control "max-age=3600, public";
        }


        location ~ /wp-content/cache/supercache.*gz$ {
                gzip off;
                types {}
                default_type text/html;
                add_header Vary "Accept-Encoding, Cookie";
                add_header Pragma "public";
                add_header Cache-Control "max-age=3600, public";
                add_header Content-Encoding gzip;
        }


        location / {

                try_files $gzipcachefile $cachefile $uri $uri/ /index.php$is_args$args;
        }

Я нашел правило перезаписи, которое учитывает заголовки из местоположения ~ /wp-content/cache/supercache.*gz$, но если файлы *.html или *.gz не найдены впапка кеша nginx выдает ошибку 404.

 if (!-e $request_filename) {
   rewrite ^.*$ $wp_cacheurl;
 }

У кого-нибудь есть подсказка, как мне решить эту проблему с помощью try_files или правил перезаписи?

...