使用kubernetes nginx-ingress反向代理支持SNI的站点

mzaanser  于 2024-01-06  发布在  Nginx
关注(0)|答案(2)|浏览(206)

我正在使用kubernetes nginx-ingress设置反向代理,但我不知道如何在配置中添加nginx参数,具体为:proxy_ssl_server_name。如何在yaml配置中设置ingress参数?
我已经尝试过使用server-snippet annotation,但它似乎没有将参数添加到集群pod中的nginx.conf文件中。
下面是反向代理的当前代码:

  1. kind: Service
  2. apiVersion: v1
  3. metadata:
  4. name: formstack
  5. namespace: serves
  6. spec:
  7. type: ExternalName
  8. externalName: fluidsignal.formstack.com
  9. ---
  10. apiVersion: extensions/v1beta1
  11. kind: Ingress
  12. metadata:
  13. name: formstack
  14. namespace: serves
  15. annotations:
  16. kubernetes.io/ingress.class: nginx
  17. nginx.ingress.kubernetes.io/upstream-vhost: "fluidsignal.formstack.com"
  18. nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
  19. spec:
  20. tls:
  21. - hosts:
  22. - fluidattacks.com
  23. secretName: fluidattacks-cert
  24. rules:
  25. - host: fluidattacks.com
  26. http:
  27. paths:
  28. - backend:
  29. serviceName: formstack
  30. servicePort: 443
  31. path: /forms(.*)

字符串
在设置代理后,我从Nginx得到一个502 Bad Gateway错误。在查看pods日志后,我看到我得到以下openssl错误:SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:SSL alert number 40,这就是为什么我想添加我之前提到的参数。

a8jjtwal

a8jjtwal1#

我刚刚发现我确实使用了正确的注解:nginx.ingress.kubernetes.io/server-snippet
但我需要添加一个额外的参数:proxy_ssl_name
添加以下代码修复了问题:

  1. nginx.ingress.kubernetes.io/server-snippet: |
  2. proxy_ssl_name fluidsignal.formstack.com;
  3. proxy_ssl_server_name on;

字符串
现在一切都正常了:D

zdwk9cvp

zdwk9cvp2#

第一个答案几乎是正确的,但应该使用configuration-snippet而不是server-snippet
第一个(server-snippet)将在整个服务器级别(整个ingress服务器)上添加配置,最后一个(configuration-snippet)将在当前ingress对象相关的nginx location内部应用

  1. nginx.ingress.kubernetes.io/server-snippet: |
  2. proxy_ssl_name fluidsignal.formstack.com;
  3. proxy_ssl_server_name on;

字符串

相关问题