首页 > 解决方案 > Kubernetes Ingress 部署 Angular 资产(图片)不显示

问题描述

我使用 Docker 来打包 Angular 项目(容器使用 Nginx)。在 Docker 上运行时,图像显示正常,但是当使用 Ingress 部署到 Kubernetes 时,assets文件夹中的所有图像都不会出现。

在 Docker 上运行的内容类型。没关系:

链接图片

但是在 Kubernetes 上运行时。内容类型始终为 text/html:

链接图片

配置入口 Kubernetes。服务名称ssite

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: abc-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "swing-static-ip"
    ingress.kubernetes.io/force-ssl-redirect: "true"
    ingress.gcp.kubernetes.io/pre-shared-cert: "abc,xyz"
spec:
  rules:
  - host: abc.com
    http:
      paths:
      - backend:
          serviceName: sservice
          servicePort: 8000
  - host: xyz.com
    http:
      paths:
      - path : /
        backend:
          serviceName: ssite
          servicePort: 80
      - path : /*
        backend:
          serviceName: ssite
          servicePort: 80

标签: angularkubernetes

解决方案


在您的 nginx 配置中设置default_type指令

定义响应的默认 MIME 类型。可以使用 types 指令设置文件扩展名到 MIME 类型的映射。

server {
   ...
   default_type text/html;

   location /assets/imgs {
      default_type image/png;
   }

   location /assets/imgs {
      default_type image/jpeg;
   }
}

推荐阅读