Я использую облачный балансировщик нагрузки Google, который находится перед серверной службой nginx (в терминах облака Google) .
Когда я обращаюсь к серверу nginx напрямую, я вижу заголовок Content-Encoding: gzip (слева).
Но ответ от балансировщика нагрузки не содержит этого заголовка (правая сторона).
Я включил gzip_proxied в моем файле конфигурации nginx:
server {
listen 80;
gzip on;
gzip_vary on;
gzip_proxied any; // <------ Here
gzip_types text/plain text/css text/js text/xml text/javascript application/javascript application/x-javascript application/json application/xml application/rss+xml image/svg+xml;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
gzip_static on;
if ($http_x_forwarded_proto = "http") {
return 301 https://$host$request_uri;
}
try_files $uri $uri/ /index.html;
}
}
Соответствующая ссылка, которая не сработала: https://stackoverflow.com/questions/35947469/google-cloud-http-balancer-and-gzip
Есть идеи?
Я публикую этот вики-ответ сообщества, чтобы сделать решение более заметным.
Как ответил @Mohibul Mahmud в разделе комментариев, на этот вопрос уже был дан ответ:
Облачный балансировщик нагрузки сам не сжимает и не распаковывает ответы. Они обслуживают ответы, сгенерированные внутренними экземплярами, которые сжаты с помощью gzip. Вам необходимо включить проксирование gzip.
Чтобы этот заголовок содержался в ответе балансировщика нагрузки, в файле конфигурации nginx вам может потребоваться настроить заголовок Accept-Encoding и изменить пользовательский агент, чтобы он содержал строковый агент, как указано в этом документе.
Например:
Accept-Encoding: gzip
User-Agent: my program (gzip)