SSI
Включение SSI - работает на уровнях http, server, location, if в location:
- nginx.conf
server { location /ssi/ { ssi on; ... } }
Если nginx используется как прокси (например, фронт перед apache), то при включении сжатия nginx не сможет разобрать SSI конструкции.
Проверка:
curl -I -H 'Accept-Encoding: gzip,deflate' {URI}
Лечение - 1 способ - отключение модуля полностью:
a2dismod deflate
Лечение - 2 способ - исправить заголовки, чтобы апач не сжимал:
- nginx.conf
location /ssi/ { ssi on; proxy_set_header Accept-Encoding ''; proxy_set_header User-Agent 'IamSSI'; include common-locations/apache-proxy.conf; }
В апаче проверяем, если User-Agent IamSSI
- то не кешируем:
- .htaccess
<IfModule mod_deflate.c> <IfModule mod_filter.c> # these are known to be safe with MSIE 6 AddOutputFilterByType DEFLATE text/html text/plain text/xml # everything else may cause problems with MSIE 6 AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/xml </IfModule> <IfModule mod_setenvif.c> BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html SetEnvIf User-Agent IamSSI !no-gzip !gzip-only-text/html </IfModule> </IfModule>
Вложение динамического блока
Будет вызван URL ssi.inc.php
и его результат - вложен в ответ:
- response.html
<!--#include virtual="/ssi.inc.php" -->