Назад | Перейти на главную страницу

Обратный прокси-сервер Nginx игнорирует заголовки кеша

Я использую nginx как балансировщик нагрузки. вот упрощенная версия моего файла конфигурации nginx.

upstream myUpstream {
   server server1.com;
   server server2.com;
}

server{
    location / {
        proxy_pass https://myUpstream;
    }
}

Чтобы использовать кеширование браузера для моих остальных вызовов api, я установил на своих внутренних серверах установку заголовков кеша, срок действия которых истекает через 1 час.

когда я отправляю свои запросы непосредственно на server1.com или server2.com, все работает отлично, и заголовки ответов кеша в порядке.

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

Моя проблема в том, как настроить мой сервер балансировки нагрузки, чтобы он не помещал свои собственные заголовки кеша в мои остальные ответы api?

вот мой полный файл конфигурации nginx:

limit_req_zone $binary_remote_addr zone=mylimit:100m rate=10r/s;

upstream myUpstream {
       ip_hash;
       server server1.com weight=1;
       server server2.com weight=1;
}


server {
    #---- Server Domain neme
    server_name www.server.com;

    keepalive_requests 100;
    keepalive_timeout 20s;


    listen 443 ssl http2 ;
    listen [::]:443 ssl http2 ;

    # ssl config
    ssl_certificate path.pem;
    ssl_certificate_key privateKeyPath.pem;

    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 5m;
    ssl_ciphers HIGH:SALT;
    ssl_prefer_server_ciphers   on;

    location / {
        limit_req zone=mylimit burst=10 nodelay;

        proxy_pass https://myUpstream;
        proxy_set_header  X-Scheme $scheme;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
    if ($host = server.com) {
        return 301 https://$host$request_uri;
    }
    listen         80;
    server_name server.com;
    return         301 https://$server_name$request_uri;
}

server {
    if ($host = www.server.com) {
        return 301 https://$host$request_uri;
    }
    listen         80;
    server_name www.server.com;
    return         301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2 ;
    listen [::]:443 ssl http2 ;
    ssl_certificate path.pem;
    ssl_certificate_key privatekeyPath.pem;

   server_name server.com;
   return         301 https://www.$server_name$request_uri;

}