【TKE】Ingress-Nginx 反向代理外部 Https 网站

使用背景

如果想要在 Ingress-nginx 中反向代理一个外部的 https 网站,可以使用以下的方式,这里以反向代理 https://www.baidu.com 为例:

  • 创建一个类型为 ExternalName 的 Service :
代码语言:yaml
复制
apiVersion: v1
kind: Service
metadata:
  name: external
  namespace: default
spec:
  externalName: www.baidu.com
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  type: ExternalName
  • 创建 Ingress 规则暴露上面创建的 ExternalName Service:
代码语言:yaml
复制
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: <class_name>
    nginx.ingress.kubernetes.io/backend-protocol: HTTPS # 指定后端协议为https
    nginx.ingress.kubernetes.io/upstream-vhost: www.baidu.com #指定转发上游的host为要代理的域名
  name: jokey
  namespace: default
spec:
  rules:
  - host: <ingress-expose-domain>
    http:
      paths:
      - backend:
          service:
            name: external
            port:
              number: 443
        path: /
        pathType: ImplementationSpecific
  • 创建完成访问暴露的服务,可以得到 baidu 的正常响应: