2

У меня два сервера настроены почти одинаково. Один - мой рабочий сервер, а другой - мой промежуточный сервер. Конфигурация nginx на обоих является копиями друг друга, за исключением имени сервера (и везде, где я использую имя сервера)

Вот конфиг с моего промежуточного сервера.

server {
  listen 80;
  server_name *.johnvarghese.info johnvarghese.info;
  return 301 https://$host$request_uri;
}

server {
  listen 443;
  ssl on;
  ssl_certificate /etc/johnvarghese.info.ssl/star.johnvarghese.info.bundle.crt;
  ssl_certificate_key /etc/johnvarghese.info.ssl/star.johnvarghese.info.key;

  server_name support.johnvarghese.info;
  return 301 "$scheme://johnvarghese.info/support${request_uri}";
}

server {
  listen 443;
  ssl on;
  ssl_certificate /etc/johnvarghese.info.ssl/star.johnvarghese.info.bundle.crt;
  ssl_certificate_key /etc/johnvarghese.info.ssl/star.johnvarghese.info.key;

  server_name *.johnvarghese.info johnvarghese.info;

  passenger_ruby /usr/local/rvm/gems/ruby-2.1.0/wrappers/ruby;
  passenger_enabled on;
  root /var/www/johnvarghese.info/current/public;

  location ~* \.(mp4|ogg|webm)$ {
    expires 10d;
    add_header Cache-Control "max-age=864000";
  }

}

Промежуточный сервер называется johnvarghese.info. На рабочем сервере я заменил все экземпляры johnvarghese.info на servername.com.

Интересующие меня строки - это последние три строки в конфиге - я просто хочу кэшировать видеофайл webm (который я повторяю при воспроизведении в цикле). Отлично работает на промежуточном сервере. Как только видео загружено, я могу отключить беспроводную сеть на моем ноутбуке, и видео постоянно зацикливается, и дальнейшая загрузка не требуется. Код ответа в консоли - 206 каждый раз, начиная со второго раза. Сервер больше не поражен.

На рабочем сервере сервер срабатывает каждый раз, когда видео зацикливается. Код ответа - 304 (без изменений). Если я выключаю беспроводную сеть на своем ноутбуке, когда видео завершает текущее воспроизведение, оно останавливается, потому что не может загрузить его снова для повторения.

Почему такая же конфигурация

  location ~* \.(mp4|ogg|webm)$ {
    expires 10d;
    add_header Cache-Control "max-age=864000";
  }

работать по-разному на этих одинаково настроенных серверах? Я хочу, чтобы рабочий сервер работал так же, как промежуточный сервер. Что я должен делать?

Спасибо

1 ответ1

1

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

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

Посмотрите этот пост для большего количества идей относительно причины: add_header Nginx и контроль за кешем.
Здесь предлагаются модули more_set_headers и more_clear_headers для замены или очистки заголовков.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .