--- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cdn namespace: infra-net annotations: nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/rewrite-target: "/$3" # 重定向配置 nginx.ingress.kubernetes.io/proxy-redirect-from: "/" nginx.ingress.kubernetes.io/proxy-redirect-to: "/$1/" # 添加允许跨域请求 nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/cors-allow-origin: "https://dev.cm, https://*.dev.cm, https://fillcode.cm, https://*.fillcode.cm" nginx.ingress.kubernetes.io/cors-allow-credentials: "true" # cookie配置 nginx.ingress.kubernetes.io/proxy-cookie-domain: "~^(.+)$ cdn.fillcode.com" nginx.ingress.kubernetes.io/proxy-cookie-path: "/ /$1" nginx.ingress.kubernetes.io/configuration-snippet: | proxy_cookie_flags ~ SameSite=None Secure; spec: ingressClassName: nginx rules: - host: cdn.fillcode.com http: paths: - path: /(dev-cm)(/|$)(.*) pathType: ImplementationSpecific backend: service: name: cdn-halo port: number: 80 - path: /(git-dev-cm)(/|$)(.*) pathType: ImplementationSpecific backend: service: name: cdn-gitea-http port: number: 3000 - path: /(monitor-dev-cm)(/|$)(.*) pathType: ImplementationSpecific backend: service: name: cdn-prometheus-grafana port: number: 80 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cdn-fallback namespace: infra-net annotations: nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/cors-allow-origin: "https://dev.cm, https://*.dev.cm, https://fillcode.cm, https://*.fillcode.cm" nginx.ingress.kubernetes.io/cors-allow-credentials: "true" nginx.ingress.kubernetes.io/configuration-snippet: | set_by_lua_block $cdn_redirect_prefix { if ngx.var.request_method ~= "GET" and ngx.var.request_method ~= "HEAD" then return "" end local source = ngx.var.http_origin if not source or source == "" then source = ngx.var.http_referer end local host = source and source:match("^https?://([^/:]+)") if not host or host:lower() == ngx.var.host then return "" end local prefix = "/" .. (host:lower():gsub("%.", "-")) local uri = ngx.var.uri if uri == prefix or uri:sub(1, #prefix + 1) == prefix .. "/" then return "" end return prefix } add_header Cache-Control "no-store" always; if ($cdn_redirect_prefix != "") { return 302 https://$host$cdn_redirect_prefix$request_uri; } spec: ingressClassName: nginx rules: - host: cdn.fillcode.com http: paths: - path: /(.*) pathType: ImplementationSpecific backend: service: name: ingress-nginx-defaultbackend port: number: 80 --- apiVersion: v1 kind: Service metadata: name: cdn-halo namespace: infra-net spec: type: ExternalName externalName: halo.apps.svc.cluster.local --- apiVersion: v1 kind: Service metadata: name: cdn-gitea-http namespace: infra-net spec: type: ExternalName externalName: gitea-http.infra-gitops.svc.cluster.local --- apiVersion: v1 kind: Service metadata: name: cdn-prometheus-grafana namespace: infra-net spec: type: ExternalName externalName: prometheus-grafana.infra-monitor.svc.cluster.local