Рейтинг:0

HTTP_IF_NONE_MATCH отсутствует на стороне сервера с запросами Chrome к NGINX

флаг ke

я пытаюсь добавить этаг проверка кэша на основе веб-приложения, которое я разработал, которое работает на Apache через обратный прокси-сервер NGINX. Веб-приложение написано на Perl. В Perl-скрипте я проверяю $ENV{'HTTP_IF_NONE_MATCH'} заголовок, а затем проверьте этаг в нем, если он есть. Если я получаю доступ к приложению через cURL, оно работает:

timothybutler@timothys-MacBook-Pro ~ % curl -I https://server/resource/podcast/20211101.mp3
HTTP/1.1 200 ОК
Сервер: nginx/1.21.4
Дата: пятница, 12 ноября 2021 г., 18:06:37 по Гринвичу
Content-Type: аудио/мпег
Длина содержимого: 16665729
Соединение: Keep-alive
Surrogate-Control: без кеша
Cache-Control: private, max-age=864000
Etag: "1635825322"

Учитывая это этаг обратно через cURL я получаю ожидаемый результат:

timothybutler@timothys-MacBook-Pro ~ % curl -H 'If-None-Match: "1635825322"' -I https://server/resource/podcast/20211101.mp3
HTTP/1.1 304 Не изменено
Сервер: nginx/1.21.4
Дата: пятница, 12 ноября 2021 г., 18:19:29 по Гринвичу
Соединение: Keep-alive
Cache-Control: частный, max-age=864000
Etag: "1635825322"

Однако процесс прерывается, если вместо этого я попробую его в Chrome. Отправка отчетов Chrome Если не совпадает: "1635825322" как один из заголовков, когда я обновляю страницу, но мой сервер не устанавливает HTTP_IF_NONE_MATCH переменная окружения для этого запроса, а не та, которая поступила через cURL. Если я дамп всего хэша %ENV, Если-совпадение-нет заголовок и его этаг просто не присутствует ни в какой форме, когда Chrome отправляет запрос.

Gerard H. Pille avatar
флаг in
Используйте tcpdump, чтобы узнать, кто его сбрасывает, Nginx или Apache. Вы сказали Nginx передать его? Ой, а зачем вы ставите обратный прокси перед обратным прокси?
флаг ke
@GerardH.Pille У меня действительно нет опыта работы с tcpdump - не могли бы вы дать мне хорошую рекомендацию относительно флагов для просмотра этого? Что касается NGINX, то он обслуживает статический контент для сайта, а я использую Apache для порождения процессов FastCGI для Perl. Я столкнулся с некоторыми проблемами, пытаясь заставить FastCGI правильно появляться непосредственно под NGINX.
Gerard H. Pille avatar
флаг in
В этом случае вы должны были позволить Apache обрабатывать и статический контент, но я совершенно уверен, что Nginx мог бы справиться со всем, что вам нужно. Взгляните на примеры на странице руководства tcpdump. IIRC, я бы запустил «tcpdump -A -s0» на порту, который прослушивает Apache, чтобы увидеть, существует ли еще «if-none-match». Но: «Вы сказали Nginx передать его?»

Ответить или комментировать

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