Назад | Перейти на главную страницу

кеширование прокси nginx и ssi

Я использую nginx для кеширования запросов от вышестоящего сервера apache, однако мне нужно, чтобы несколько блоков внутри всегда извлекались из apache. Я надеюсь, что ssi может это сделать, но теги SSI выводятся пользователю без предварительной обработки.

 location ~* ^.+\.html$ {
        proxy_pass  http://localhost:9999;
        proxy_cache_key "$prime$scheme$host$request_uri";

        ssi on;
        ssi_silent_errors off;
        log_subrequest on;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header   X-Country        $country_code;

        proxy_cache my-cache;


        proxy_cache_bypass $http_x_refresh_cache;
        proxy_cache_valid  200 302  30d;
        proxy_cache_valid  404      10m;
        proxy_cache_valid  any      1m;


    }

Это соответствующая конфигурация nginx.

proxy_cache_key "$prime$scheme$host$request_uri";

Эта строка кэширует все отдельные части страницы под одним и тем же ключом (URI, введенный пользователем), поэтому разные части страницы перезаписывают друг друга, и тогда возвращается только последняя записанная. Вы хотите использовать $uri скорее, чем $request_uri, так что каждая часть каждой страницы кэшируется под своим личным именем.

Удостоверься что http: // локальный: 9999 не сжимает вывод. Просто добавив

 proxy_set_header Accept-Encoding "";

видеть: https://stackoverflow.com/questions/24680989/with-nginx-how-do-i-run-ssi-on-a-page-returned-from-another-server