配置路径字段后,Kubernetes nginx入口显示“ 403”

问题描述

以下是我的清单:

  • service.yaml
apiVersion: v1
kind: Service
metadata:
  name: jenkins
spec:
  type: NodePort
  ports:
   - port: 8080
     protocol: TCP
     targetPort: 8080
     nodePort: 80
  selector:
    app: jenkins
  #externalTrafficPolicy: "Cluster"
  • ingress.yaml
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错误。

解决方法

您没有指定要从外部访问的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: /保留当前设置。

✌️

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...