首页 > 解决方案 > 配置路径字段后,Kubernetes nginx 入口显示“403”

问题描述

以下是我的清单:

apiVersion: v1
kind: Service
metadata:
  name: jenkins
spec:
  type: NodePort
  ports:
   - port: 8080
     protocol: TCP
     targetPort: 8080
     nodePort: 80
  selector:
    app: jenkins
  #externalTrafficPolicy: "Cluster"
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nginx-ingress-entry
  annotations:
    kubernetes.io/ingress.class: "nginx"
    #nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /
    #ingress.bluemix.net/rewrite-path: "serviceName=jenkins rewrite=/"

spec:
  tls:
  - hosts:
    - ingress.hygon.cn
    secretName: nginx-cert
  rules:
  - host: ingress.hygon.cn
    http:
      paths:
      - path: /jenkins
        backend:
          serviceName: jenkins
          servicePort: 8080

我使用 nginx 入口来控制访问后端服务 Jenkins。如果我设置 http.paths.path 等于 "/" 一切正常,但如果我为 URL 设置路径字段,浏览器将显示 403 错误。

标签: nginxkuberneteskubernetes-ingressnginx-ingress

解决方案


您没有指定从外部访问的 URL。但我猜http.paths.path: /你在打:

http://hosname/jenkins

然后您将其修改为http.paths.path: /jenkins,并点击您获得的相同 URL 403。如果是这种情况,您需要删除nginx.ingress.kubernetes.io/rewrite-target: /,因为这实际上是在重写/jenkins并且/您的 Jenkins 服务器不知道如何为它提供服务。

或者,您可以只更改 Jenkins 服务器上的配置以在其下服务并使用和/保持当前设置。http.paths.path: /jenkinsnginx.ingress.kubernetes.io/rewrite-target: /

✌️


推荐阅读