Kubernetes-入口TCP服务SSL终止
我正在使用HTTPS流量的入口进行SSL终止。但我也希望为自定义端口(http虚拟主机)实现同样的功能。例如Kubernetes-入口TCP服务SSL终止,kubernetes,google-cloud-platform,Kubernetes,Google Cloud Platform,我正在使用HTTPS流量的入口进行SSL终止。但我也希望为自定义端口(http虚拟主机)实现同样的功能。例如https://example.com:1234应转到http://example.com:1234 Nginx入口有一个ConfigMap,我们可以在其中公开自定义端口。但是SSL终止在这里不起作用 有工作吗?我想知道是否可以改用.htaccess重定向传入的https apiVersion: v1 kind: ConfigMap metadata:
https://example.com:1234
应转到http://example.com:1234
Nginx入口有一个ConfigMap
,我们可以在其中公开自定义端口。但是SSL终止在这里不起作用
有工作吗?我想知道是否可以改用.htaccess重定向传入的https
apiVersion: v1
kind: ConfigMap
metadata:
name: tcp-services
namespace: ingress-nginx
data:
1234: "test-web-services/httpd:1234"
---
apiVersion: v1
kind: Service
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
externalTrafficPolicy: Local
type: LoadBalancer
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- name: http
port: 80
protocol: TCP
targetPort: http
- name: port-1234
port: 1234
protocol: TCP
targetPort: 1234
nginx入口
不直接支持TCP流量的SSL终止
在本期Github中有更广泛的描述:
TCP
服务终止SSL
。具体而言:
由于您的示例将“降级”功能从
HTTPS
通信降至HTTP
,因此您可以添加一点,即更改NGINX入口控制器连接到后端的方式。让我详细说明一下
请考虑这是一个解决办法:
默认情况下,您的NGINX入口控制器将通过HTTP
连接到后端。这可以通过以下注释进行更改:
nginx.ingres.kubernetes.io/后端协议:
引用官方文件:
使用后端协议注释可以指示NGINX应该如何与后端服务通信。(替换旧版本中的安全后端)有效值:HTTP、HTTPS、GRPC、GRPC、AJP和FCGI
默认情况下,NGINX使用HTTP。
--
在此特定示例中,请求路径如下所示:
client
--(HTTPS:443)-->Ingress controller
(TLS终止)--(HTTP:service port)-->service
--Pod
警告
您可以使用LoadBalancer
类型的服务
将流量从端口1234
发送到Ingress控制器的80
/443
。这将使TLS
终止更加容易,但会迫使客户端只使用一个协议。例如:
-名称:自定义
港口:1234
协议:TCP
目标港:443
此摘录自nginx-ingres
服务
可用于将HTTPS
流量转发至ingres控制器
,其中请求将被TLS终止
,并作为HTTP
转发至后端
。强制HTTP通过该端口将产生错误代码400:错误请求
在此特定示例中,请求路径如下所示:
客户端
--(HTTPS:1234)-->入口控制器
(TLS终止)-(HTTP:service port)-->服务
Pod
您好,nginx入口
不直接支持TCP服务的SSL终止功能。这方面有一个解决办法。另外,由于您的后端是基于HTTP的,我确实认为您可以使用端口1234
发送到targetPort:443
,然后Ingress controller
将终止您的HTTPS
并向您的后端发送HTTP
请求。你试过这种方法吗?@约翰这样做?是的。我已经接受了答案