使用背景
如果想要在 Ingress-nginx 中反向代理一个外部的 https 网站,可以使用以下的方式,这里以反向代理 https://a.qsh.com 为例:
实现方式
定义外部域名的服务
- 创建一个类型为
ExternalName
的 Service :
apiVersion: v1
kind: Service
metadata:
name: external-proxy
namespace: test
spec:
externalName: a.qsh.com
ports:
- name: https
port: 443
protocol: TCP
targetPort: 443
sessionAffinity: None
type: ExternalName
定义ingress
- 创建 Ingress 规则暴露上面创建的
ExternalName
Service:
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-test-web
namespace: test
annotations:
nginx.ingress.kubernetes.io/backend-protocol: HTTPS # 指定后端协议为https
nginx.ingress.kubernetes.io/upstream-vhost: a.qsh.com # 指定转发上游的host为要代理的域名
spec:
ingressClassName: nginx-ingress
rules:
- host: 'test.qsh.com'
http:
paths:
- backend:
service:
name: external-proxy
port:
number: 443
path: /
pathType: ImplementationSpecific
完成创建后,访问 https://test.qsh.com 后,可以得到 a.qsh.com 的正常响应。