Вместо того, чтобы объявить значение по умолчанию в basenode, я объявил бы значение по умолчанию в самом шаблоне. Так как ERB в основном основан на рубине, можно сойти с рук некоторая довольно обширная логика. Вот пример из шаблона, который я использую для управления файлом конфигурации фырканья.
var DNS_SERVERS <% if has_variable?("dns_servers") then %>[<%= dns_servers.flatten.join(',') %>]<% else %>$HOME_NET<% end %>
В этом случае я использую массив, в который, если он существует, превращаются список разделенных запятой значений для включения. Иначе $HOME_NET по умолчанию привыкает. Если мы упрощаем его до Вашего примера, мы могли бы использовать:
myvar has value <% if has_variable?("myvar") %><% then %><%= myvar %><% else %>bar<% end %>
Снова, если переменная myvar
был установлен затем, это будет расширено, иначе строка "панель" будет распечатана. Таким образом, переменная myvar
может быть установлен, или нет, в Ваших определениях узла безнаказанно.
Похоже, есть два решения:
Скажите Nginx передать заголовок Content-Encoding с помощью add_header Content-Encoding $ upstream_http_content_encoding;
и выключите gzip для x-Accel-Redirect расположение, чтобы предотвратить сжатие содержимого дважды.
location ^ ~ / protected_files { gzip off; внутренний; псевдоним / home / intahwebz / var / cache; add_header Content-Encoding $ upstream_http_content_encoding; }
Включите модуль gzip_static .
Перед передачей файла с диска клиенту с поддержкой gzip этот модуль будет искать предварительно сжатый файл в том же месте, которое заканчивается на ".gz". Цель состоит в том, чтобы каждый раз не сжимать один и тот же файл. запрашивается.