У меня проблемы с настройкой обратного прокси-сервера nginx, который сохраняет сжатие gzip.
Моя установка:
У меня есть дистрибутив CLoudfront с включенным сжатием gzip (как вы можете видеть на http://dvty1uxa5ftxq.cloudfront.net мой main.js действительно сжимается, уменьшая его размер более чем на 1/3).
Поскольку некоторые страницы перенаправляются на другой веб-сайт, на моем основном URL-адресе веб-сайта я фактически маршрутизирую запросы через прокси-серверы nginx, соответствующая часть конфигурации выглядит так:
server {
listen 443 ssl;
...
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location @cloudfront {
proxy_set_header Host $http_host;
proxy_pass http://dvty1uxa5ftxq.cloudfront.net;
}
Казалось бы, этого недостаточно для предотвращения сжатия gzip, когда браузер запрашивает ресурсы веб-сайта с соответствующими заголовками accept, указывающими gzip. Я недостаточно разбираюсь в nginx, чтобы понять, нужно ли мне включать модуль gzip или делать что-нибудь. Большая часть документации, которую я могу найти, объясняет, как активировать шифрование gzip (например, для локальных файлов), но не тогда, когда уже есть надежное шифрование gzip, выполняемое проксированной конечной точкой (здесь CloudFront).
Может ли кто-нибудь помочь мне пролить свет на это?
Насколько я понимаю, вы должны включить gzip и сказать nginx, что можно отправлять сжатые ответы, даже если они проксируются.
location / {
...
gzip on;
gzip_proxied any;
...
}
Видеть https://nginx.org/en/docs/http/ngx_http_gzip_module.htm для получения дополнительной документации.
Если вы хотите включить распаковку для клиентов, которые не поддерживают gzip, посмотрите распаковать.
location / {
...
gunzip on;
...
}