本文介绍了Nginx Ingress Controller忽略CSS和JS文件-Google kuberenetes引擎的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I've created an nginx ingress controller that is linked to two services. The website works fine but the js and css files are not loaded in the HTML page (404) error. I've created nginx pod using helm, and Included the nginx config in the ingress.yaml. The error is raised when I use nginx, I've I run the docker image locally, it works fine. Also, if I made the services' types as a Load balancer, the applications work fine.

!! [这是网页中的错误] 1

![here is the error in the webpage]1

这是GKE服务:

ingress.yaml:

ingress.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:

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目录中,因此您需要在ingress.yaml中添加4条附加规则.该片段的最终版本可能如下所示:

You can probably solve your problem by adding additional ingress rules which will route the requests for static files to proper directories. As far as I can see on the attached print screen, your static files are placed in css and js directories respectively, so you need to add 4 additional rules to your ingress.yaml. The final version of this fragment may look like that:

  - 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

这篇关于Nginx Ingress Controller忽略CSS和JS文件-Google kuberenetes引擎的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-01 13:47