kubernetes - nginx 入口 Controller 忽略 css 和 js 文件 - google kuberenetes 引擎

标签 kubernetes google-kubernetes-engine kubernetes-helm nginx-ingress

我创建了一个链接到两个服务的 nginx 入口 Controller 。网站工作正常,但 js 和 css 文件未加载到 HTML 页面 (404) 错误中。我使用 helm 创建了 nginx pod,并将 nginx 配置包含在 ingress.yaml 中。当我使用 nginx 时出现错误,我在本地运行 docker 镜像,它工作正常。另外,如果我将服务类型设置为负载均衡器,则应用程序可以正常工作。

![here is the error in the webpage ] 1

enter image description here

这是 GKE 服务:

enter image description here

入口.yaml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  creationTimestamp: 2019-07-08T08:35:52Z
  generation: 1
  name: www
  namespace: default
  resourceVersion: "171166"
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/www
  uid: 659594d6-a15b-11e9-a671-42010a980160
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  rules:
  - host: twitter.domain.com
    http:
      paths:
      - backend:
          serviceName: twitter
          servicePort: 6020
  - host: events.omarjs.com
    http:
      paths:
      - backend:
          serviceName: events
          servicePort: 6010
  - http:
      paths:
      - backend:
          serviceName: twitter
          servicePort: 6020
        path: /twitter
      - backend:
          serviceName: events
          servicePort: 6010
        path: /events
  tls:
  - secretName: omarjs-ssl
status:
  loadBalancer: {}

twitter.yaml:

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: 2019-07-07T20:43:49Z
  labels:
    run: twitter
  name: twitter
  namespace: default
  resourceVersion: "27299"
  selfLink: /api/v1/namespaces/default/services/twitter
  uid: ec8920ca-a0f7-11e9-ac47-42010a98008f
spec:
  clusterIP: 10.7.253.177
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 31066
    port: 6020
    protocol: TCP
    targetPort: 3020
  selector:
    run: twitter
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: 2019-07-07T20:43:49Z
  labels:
    run: twitter
  name: twitter
  namespace: default
  resourceVersion: "27299"
  selfLink: /api/v1/namespaces/default/services/twitter
  uid: ec8920ca-a0f7-11e9-ac47-42010a98008f
spec:
  clusterIP: 10.7.253.177
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 31066
    port: 6020
    protocol: TCP
    targetPort: 3020
  selector:
    run: twitter
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}

最佳答案

您可能可以通过添加额外的入口规则来解决您的问题,这些规则会将静态文件的请求路由到正确的目录。据我在所附的打印屏幕上看到,您的静态文件分别放置在 cssjs 目录中,因此您需要向您的 添加 4 个附加规则>ingress.yaml。该片段的最终版本可能如下所示:

  - http:
      paths:
      - backend:
          serviceName: twitter
          servicePort: 6020
        path: /twitter
      - backend:
          serviceName: twitter
          servicePort: 6020
        path: /css
      - backend:
          serviceName: twitter
          servicePort: 6020
        path: /js
      - backend:
          serviceName: events
          servicePort: 6010
        path: /events
      - backend:
          serviceName: events
          servicePort: 6010
        path: /css
      - backend:
          serviceName: events
          servicePort: 6010
        path: /js

关于kubernetes - nginx 入口 Controller 忽略 css 和 js 文件 - google kuberenetes 引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56932751/

相关文章:

kubernetes-helm - 当您不知道名称时,检查 value.yaml 属性中是否有任何条目?

docker - Kubernetes 节点 ulimit 设置

networking - GKE:IP地址

Kubernetes 集群无法从 DigitalOcean 注册表中提取镜像

docker - 如何将 Container VM 上的 docker 容器与 list 链接?

kubernetes - 如何使用多个 Google Kubernetes Engine (GKE) 集群制作多区域 Kafka/Zookeeper 集群?

kubernetes - 在 GCP 上部署 Weaviate k8s 设置时,无法在 API 组中列出资源 "configmaps"

prometheus - 如何从 --set 参数将 extraScrapeConfigs 添加到 Prometheus helm 图表?

elasticsearch - Kubernetes 集群上的 Elasticsearch 集群 vs VM

Kubernetes - 准入 webhook - 验证部署中的规模操作