Как удалить заголовок “X-времени-выполнения” из Nginx/Passenger?

Проведя некоторое время с отладчиком, я думаю, что у меня есть ответ на OP.

Проблема (по крайней мере из того, что я видел) связана с некластеризованными файлами дискового кэша и тем, как они возвращаются обратно. В файле net.sf.ehcache.store.compound.factories.DiskPersistentStorageFactory .java, метод:

public DiskPersistentStorageFactory(Ehcache cache, String diskPath) {
    super(getDataFile(diskPath, cache), cache.getCacheConfiguration().getDiskExpiryThreadIntervalSeconds(),
            cache.getCacheConfiguration().getDiskSpoolBufferSizeMB(), cache.getCacheEventNotificationService(), false);

    indexFile = new File(getDataFile().getParentFile(), getIndexFileName(cache));
    flushTask = new IndexWriteTask(indexFile, cache.getCacheConfiguration().isClearOnFlush());

    if (!getDataFile().exists() || (getDataFile().length() == 0)) {
        LOG.debug("Matching data file missing (or empty) for index file. Deleting index file " + indexFile);
        indexFile.delete();
    } else if (getDataFile().exists() && indexFile.exists()) {
        if (getDataFile().lastModified() > (indexFile.lastModified() + TimeUnit.SECONDS.toMillis(1))) {
            LOG.warn("The index for data file {} is out of date, probably due to an unclean shutdown. " 
                    + "Deleting index file {}", getDataFile(), indexFile);
            indexFile.delete();
        }
    }

    diskCapacity = cache.getCacheConfiguration().getMaxElementsOnDisk();
    memoryCapacity = cache.getCacheConfiguration().getMaxElementsInMemory();
    memoryPolicy = determineEvictionPolicy(cache.getCacheConfiguration());
}

проверяет временные метки в файлах данных. Проблема, с которой я сталкиваюсь, заключается в том, что независимо от того, как я заканчиваю работу с кэшем / менеджером, файлы никогда не синхронизируются должным образом. Мой быстрый и грязный обходной путь состоял в том, чтобы отрегулировать время файла данных, чтобы оно было сразу после отметки времени в файле индекса:

File index = new File( path, name + ".index" );
File data  = new File( path, name + ".data"  );

data.setLastModified( index.lastModified() + 1 );

Конечно, это не элегантно, но оно служит моим потребностям, поскольку наш проект использует кластерные кеши, и это позволяет мне отлаживать автономно с постоянным кешем ... и без необходимости запускать Terracotta локально.

Одним из предостережений является то, что для некластеризованных кэшей мне необходимо выполнять flush () после каждого put () и remove (), чтобы сохранить образ диска свежим, особенно при отладке из-за отсутствия завершения работы поддержка, когда вы просто «потяните за вилку».

8
задан 12 June 2009 в 12:57
поделиться

3 ответа

Оказалось, что он не установлен ни в Nginx, ни в Passenger.

Он находится в файле benchmarking.rb в /gems/actionpack-2.3.2/lib/action_controller/, строка 90.

7
ответ дан 5 December 2019 в 07:36
поделиться

В Apache вы можете использовать mod_headers , чтобы удалить любой заголовок из ответа (или запроса в этом отношении).

Чтобы удалить заголовки, вам необходимо включить модуль:

# a2enmod headers

Затем вы можете использовать параметр unset для директивы Header, чтобы отключить их:

Header unset X-Runtime
Header unset X-Powered-By

Эта директива может использоваться как на глобальном уровне, так и для отдельного виртуального -сервер

3
ответ дан 5 December 2019 в 07:36
поделиться

Следующее предназначено для Apache. Я неправильно прочитал вопрос. :)

Включите модуль заголовков, mod_headers , и добавьте следующее в конфигурацию Apache

Header always unset "X-Runtime"

Вы, вероятно, также захотите удалить заголовок X-Powered-By , поэтому добавьте также следующее.

Header always unset "X-Powered-By"
2
ответ дан 5 December 2019 в 07:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: