使用背景
如果想要在 Ingress-nginx 中反向代理一个外部的 https 网站,可以使用以下的方式,这里以反向代理 https://www.baidu.com 为例:
- 创建一个类型为
ExternalName
的 Service :
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:
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 的正常响应: