ssl - 使用 kubernetes nginx-ingress 反向代理具有 SNI 支持的站点
问题描述
我正在使用 kubernetes nginx-ingress 设置反向代理,但我不知道如何将 nginx 参数添加到配置中,特别是:proxy_ssl_server_name。如何在 yaml 配置中设置入口参数?
我已经尝试使用server-snippet注释,但似乎它没有将参数添加到集群 pod 中的 nginx.conf 文件中。
这是反向代理的当前代码:
kind: Service
apiVersion: v1
metadata:
name: formstack
namespace: serves
spec:
type: ExternalName
externalName: fluidsignal.formstack.com
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: formstack
namespace: serves
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/upstream-vhost: "fluidsignal.formstack.com"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
tls:
- hosts:
- fluidattacks.com
secretName: fluidattacks-cert
rules:
- host: fluidattacks.com
http:
paths:
- backend:
serviceName: formstack
servicePort: 443
path: /forms(.*)
设置代理后,我502 Bad Gateway
从 Nginx 收到错误消息。查看 pods 日志后,我看到我收到以下 openssl error: SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:SSL alert number 40
,这就是为什么我要添加我之前提到的参数。
解决方案
我刚刚发现我确实使用了正确的注释:nginx.ingress.kubernetes.io/server-snippet
,
但我需要添加一个额外的参数:proxy_ssl_name
添加以下代码解决了问题:
nginx.ingress.kubernetes.io/server-snippet: |
proxy_ssl_name fluidsignal.formstack.com;
proxy_ssl_server_name on;
现在一切似乎都很好:D
推荐阅读
- hadoop - 我无法访问 Hadoop Web 界面(DataNode、ResourceManager)
- json - 编组时间。到 unix 时间戳的时间
- python - Ubuntu 升级到 18.04 后,keras 和 tensorflow 中的 GPU 变慢
- android - 给定 4 个点的坐标,在谷歌地图 API 上创建方形网格
- r - 使用嵌套的 for 循环填充距离矩阵
- r - FlowJo v10.0 中的黑桃
- mysql - 同一实体的多个表示正在合并错误
- ansible - 无法创建 %UserProfile% 目录
- macos - 如何设置Tcl/Tk“系统配置”项?
- php - Laravel 中的表单提交错误:“找不到对象”