Почему nginx не пересылает заголовок Vary, отправленный Apache в режиме прокси? - PullRequest
0 голосов
/ 02 апреля 2020

Я использую Plesk (кажется, 17.8.11, предоставленный OVH), а nginx настроен как прокси. Мой сценарий PHP возвращает изображения в формате WEBP, когда браузер принимает его, в противном случае он возвращает формат оригинала (JPG или PNG).

В .htaccess я возвращаю заголовок Vary: Accept, поэтому прокси-серверы знают, что содержимое зависит от заголовок Accept.

В nginx настройках Plesk я только проверил опцию «Режим прокси», остальные флажки сняты. Когда я получаю изображение, которого Vary: Accept нет, я не могу представить, что nginx не обрабатывает этот заголовок, пожалуйста, помогите мне разобраться в этом.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Я наконец нашел причину: я не отправлял заголовок «Vary: Accept» для расширения «.webp», только для «.jpg» и «.png». Мои URL-адреса заканчиваются на .jpg или .png, а не на .webp, и это хорошо работает с Apache. Вот мои директивы htaccess:

<IfModule mod_setenvif.c>
    SetEnvIf Request_URI "\.(jpe?g|png)$" REQUEST_image
</IfModule>
<IfModule mod_headers.c>
    Header append Vary Accept env=REQUEST_image
</IfModule>

Чтобы исправить это, я добавил .webp в фильтр URL-адресов:

<IfModule mod_setenvif.c>
    SetEnvIf Request_URI "\.(jpe?g|png|webp)$" REQUEST_image
</IfModule>
<IfModule mod_headers.c>
    Header append Vary Accept env=REQUEST_image
</IfModule>

Теперь все хорошо.

0 голосов
/ 27 апреля 2020

Чтобы заголовок Vary: был разрешен и понят для nginx, в настройках /etc/nginx/nginx.conf вам понадобятся настройки gzip on и gzip_vary on.

На самом деле у Plesk есть документация по этому поводу, вы заходили на сайт поддержки Plesk? https://support.plesk.com/hc/en-us/articles/213380049-How-to-enable-disable-gzip-compression-in-nginx-on-a-Plesk-server

Кстати, ваша версия Plesk довольно старая, я бы порекомендовал вам обновить ее.

...