Облачный балансировщик нагрузки Google не возвращает Content-Encoding: gzip

Я использую облачный балансировщик нагрузки Google, который находится перед серверной службой nginx (в терминах облака Google) .

Когда я обращаюсь к серверу nginx напрямую, я вижу заголовок Content-Encoding: gzip (слева).

Но ответ от балансировщика нагрузки не содержит этого заголовка (правая сторона).

enter image description here

Я включил 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

Есть идеи?

1
задан 20 August 2018 в 16:49
1 ответ

Я публикую этот вики-ответ сообщества, чтобы сделать решение более заметным.

Как ответил @Mohibul Mahmud в разделе комментариев, на этот вопрос уже был дан ответ:

Облачный балансировщик нагрузки сам не сжимает и не распаковывает ответы. Они обслуживают ответы, сгенерированные внутренними экземплярами, которые сжаты с помощью gzip. Вам необходимо включить проксирование gzip.

Чтобы этот заголовок содержался в ответе балансировщика нагрузки, в файле конфигурации nginx вам может потребоваться настроить заголовок Accept-Encoding и изменить пользовательский агент, чтобы он содержал строковый агент, как указано в этом документе.

Например:

Accept-Encoding: gzip

User-Agent: my program (gzip)

1
ответ дан 8 February 2021 в 12:59

Теги

Похожие вопросы