微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Kubernetes Ingress Nginx载入中的资源404

海兰

我们正试图让我们的网站处理kubernetes(使用Nginx在容器中运行).我们使用ingress路由到站点,这是我们的配置:

Nginx的-conf的:

server {
  listen 80;
  location / {
    root /usr/share/Nginx/html;
    index index.html index.htm;
    try_files $uri $uri/ /index.html =404;
  }
}

Kubernetes部署:

apiVersion: apps/v1beta1
kind: Deployment
Metadata:
  name: mywebsite
spec:
  replicas: 2
  template:
    Metadata:
      labels:
        app: mywebsite
    spec:
      containers:
      - name: mywebsite
        image: containerurl/xxx/mywebsite:latest
        ports:
        - containerPort: 80

---
apiVersion: v1
kind: Service
Metadata:
  name: mywebsite
spec:
  ports:
  - port: 82
    targetPort: 80

  selector:
    app: mywebsite

Ingress配置:

apiVersion: extensions/v1beta1
kind: Ingress
Metadata:
  name: myIngress
  annotations:
    kubernetes.io/tls-acme: "true"
    Nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
  - hosts:
    - xxx.com
    secretName: tls-secret
  rules:
  - host: xxx.com
    http:
      paths:
      - path: /mywebsite
        backend:
          serviceName: mywebsite
          servicePort: 82

当我访问xxx.com/mywebiste时,index.html正在加载,但未加载css和js(404):

index.html的:

<!DOCTYPE html>
<html>
  <head>
    <Meta charset="utf-8">
    <title>My Website</title>
    <Meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  <link href="/styles.30457fcf45ea2da7cf6a.css" rel="stylesheet"></head>
  <body>
  <div id="react-root"></div>
  <script type="text/javascript" src="/app.171d6a95cf24d8abab14.js"></script></body>
</html>

…因为它试图获取资源,例如css:

xxx.com/styles.30457fcf45ea2da7cf6a.css

…代替:

xxx.com/mywebsite/styles.30457fcf45ea2da7cf6a.css

如果试过不同的东西,比如

Nginx.ingress.kubernetes.io/add-base-url
Nginx.ingress.kubernetes.io/app-root

等等,但似乎没有任何效果.

有任何想法吗?谢谢你的帮助.

问候,
彼得

解决方法:

这不是Nginx部分的路由问题,而是浏览器尝试从域的根目录访问绝对URI.使用相对URI(删除前导斜杠):

<link href="styles.30457fcf45ea2da7cf6a.css" rel="stylesheet"></head>
<script type="text/javascript" src="app.171d6a95cf24d8abab14.js"></script></body>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐