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