Я использую 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;
}