我正在尝试使用裸机设置Kubernetes,并且我已经在默认名称空间中部署了我的Nginx,并且我正在尝试创建一个虚拟服务器来路由仪表板。但是,当我尝试访问URL时,它将我引导到错误404,并且当我从pod查看日志时,它似乎有一个损坏的标头。我遇到了kubernetes/ingress-nginx#3996,他们给出了添加代理协议的建议,如果我将下面的代码片段添加到我的配置映射中,其他路由将失败。
proxy-protocol: "True"
real-ip-header: "proxy_protocol"
set-real-ip-from: "0.0.0.0/0"日志:
2021/04/27 07:43:28 [error] 145#145: *155 broken header: "▬♥☺☻☺☺�♥♥�#�↓�|��-�B�d�s�HZ��]!��↨��☻ O|����%���o�/k��R ��¶�u�♂����VI"��‼☺‼☻‼♥�+�/�,�0̨̩�‼�¶��/" while reading PROXY protocol, client: 192.168.254.9, server: 0.0.0.0:443 nginx-config-map.yaml
kind: ConfigMap
apiVersion: v1
metadata:
name: nginx-ingress-cm
namespace: default
data:
http2: "true"
ssl-protocols: TLSv1.2 TLSv1.3
ssl-prefer-server-ciphers: "true"
ssl-ciphers: ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-
SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
set-real-ip-from: 0.0.0.0/0
real-ip-header: X-Forwarded-For
server-snippets: |
proxy_hide_header Strict-Transport-Security;
add_header Strict-Transport-Security "max-age=31536000" always;有没有暗示我做错了什么?提前谢谢。
添加服务yaml,对于仪表板,我使用的是源代码中推荐的设置(dashboard.yaml)。nginx-入口-服务
apiVersion: v1
kind: Service
metadata:
name: nginx-ingress-svc
namespace: default
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
protocol: TCP
name: HTTP
- port: 443
targetPort: 443
protocol: TCP
name: https
selector:
app: nginx-ingress用于dashboard.yaml的虚拟服务器
apiVersion: k8s.nginx.org/v1
kind: VirtualServer
metadata:
name: kubernetes-dashboard-vs
namespace: kubernetes-dashboard
spec:
host: k8.moonshot.com
tls:
secret: nginx-tls-secret
redirect:
enable: true
code: 301
upstreams:
- name: kubernetes-dashboard
service: kubernetes-dashboard
port: 443
routes:
- path: /
action:
pass: kubernetes-dashboard发布于 2021-04-28 08:56:14
我已经发布了issue on the github repository,并设法修复了它。
社区成员建议的解决方案是:
400响应代码是因为NGINX向仪表板上的HTTPs端口发送了HTTPs请求。要解决这个问题,有必要在NGINX和仪表板之间启用HTTPs。
Virtualserver yaml必须更新为以下内容:
- name: kubernetes-dashboard
service: kubernetes-dashboard
port: 443
tls:
enable: true此示例适用于裸机kubernetes
https://stackoverflow.com/questions/67279646
复制相似问题