我尝试将 Google Cloud CDN 配置到我的容器引擎项目。
按照文档它有一个 Content-Length 标头或一个 Transfer-Encoding 标头以便被缓存。
我的后端使用 gzip 压缩,所以我有 Transfer-Encoding: chunked
问题是入口负载均衡器似乎删除了 Transfer-encoding 标头,所以我不能有“缓存命中”
我使用“kubectl port-forward”将直接连接到实例后端,并且我有 Transfer-encoding 标头。
但是当我连接到外部 IP 时,标头已经消失。
这是我的入口配置
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: gateway-preprod3-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: gateway-preprod2-static-ip
spec:
tls:
- secretName: gateway-preprod-secret-2018-with-ca-7
backend:
serviceName: gateway-preprod
servicePort: 80
这是我的部署配置
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: gateway-preprod
spec:
replicas: 1
strategy:
type: RollingUpdate
minReadySeconds: 50
template:
metadata:
labels:
app: gateway-preprod
spec:
containers:
- name: gateway-preprod
image: eu.gcr.io/writecontrol-1055/gateway:v305
env:
- name: writecontrolEnv
value: preprod
ports:
- containerPort: 80
相反,对于某些未经过 GZIP 压缩的资源,会给出 Content-length 标头,并且我有一个成功的“缓存命中”
kubernetes 版本是 1.7.12-gke.1
这是一个测试它的 URL:https ://preprod-writecontrol.ovh