Я запускаю модуль на основе apache -httpd в нашем ранчо (Kubernetes). Этот httpd обслуживает некоторые файлы stati c html + javascript + css. Далее я поместил файл .htaccess
в папку htdocs
. Этот файл определяет, как должно выполняться кэширование. Мой файл index.html
вообще не должен кэшироваться. Браузеры должны загружать этот файл каждый раз и не кэшировать его. Но файлы js (которые указаны в файле index. html) должны быть кэшированы. Я могу это сделать, потому что каждое имя файла. js files содержит ha sh. Если содержимое файла. js изменяется, имя файла изменяется при его компиляции.
Содержимое файла .htaccess:
<FilesMatch "\.(html)$">
FileETag None
<IfModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 12 Jan 1980 05:00:00 GMT"
</IfModule>
</FilesMatch>
<FilesMatch "\.(js|css)$">
FileETag None
<IfModule mod_headers.c>
ExpiresActive On
ExpiresDefault "access plus 2 weeks"
</IfModule>
</FilesMatch>
Теперь у меня есть Ingress, который помещается перед Развертыванием (и соответствующей службой):
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: gateway-ui
namespace: ui
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- http:
paths:
- path: /ui(/|$)(.*)
backend:
serviceName: ui
servicePort: 80
Проблема . Если я запустил httpd- docker iamge на своем ноутбуке, кеширование будет работать отлично. Но если модуль развернут в Kubernetes, похоже, что конфигурация кеша моего httpd игнорируется. Я полагаю, что Ingress каким-то образом нарушает кеширование.
Вопрос : Что нужно сделать, чтобы мой Ingress использовал «ту же» конфигурацию кеширования, что и в моем развертывании httpd?