Kubernetes nginx入口控制器丢弃响应头/如何从外部身份验证获取响应头
我正在使用nginx入口控制器和外部身份验证通过授权应用程序路由到我的应用程序。下面是我的入口文件:Kubernetes nginx入口控制器丢弃响应头/如何从外部身份验证获取响应头,kubernetes,kubernetes-ingress,Kubernetes,Kubernetes Ingress,我正在使用nginx入口控制器和外部身份验证通过授权应用程序路由到我的应用程序。下面是我的入口文件: apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: hello-kubernetes-ingress annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/auth-url: http://b
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: hello-kubernetes-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/auth-url: http://b20bdc2b8916.ngrok.io/authorize
nginx.ingress.kubernetes.io/auth-method: POST
spec:
rules:
- host: hw1.yourdomain
http:
paths:
- backend:
serviceName: hello-kubernetes-first
servicePort: 80
- host: hw2.yourdomain
http:
paths:
- backend:
serviceName: hello-kubernetes-second
servicePort: 80
~
授权API返回响应头(主体id、应用程序类型),我希望从下面的命令中获取
curl -X GET "http://hw1.yourdomain" -H "accept: */*" -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik15dDZzVVd2WWdkS253WHVlVE9XaC0zNVFzdnFRSjk3aDdOTFhVdkt4YUkifQ.eyJpc3MiOiJodHR*****"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 668 100 668 0 0 49 0 0:00:13 0:00:13 --:--:-- 152HTTP/1.1 200 OK
Date: Tue, 09 Mar 2021 09:35:52 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 668
Connection: keep-alive
X-Powered-By: Express
ETag: W/"29c-/QY+HmD5p/HwK1AOeM+b3H5wbI0"
<!DOCTYPE html>
<html>
<head>
<title>Hello Kubernetes!</title>
<link rel="stylesheet" type="text/css" href="/css/main.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Ubuntu:300" >
</head>
<body>
<div class="main">
<img src="/images/kubernetes.png"/>
<div class="content">
<div id="message">
Hello from the first deployment!
</div>
<div id="info">
<table>
<tr>
<th>pod:</th>
<td>hello-kubernetes-first-8477fc565d-gb22w</td>
</tr>
<tr>
<th>node:</th>
<td>Linux (4.19.157)</td>
</tr>
</table>
</div>
</div>
</div>
</body>
</html>
curl-X GET”http://hw1.yourdomain“-H”接受:*/*“-H”授权:持票人EYJ0EXAIIOIJKV1QILCJHBGCIOIJSUZI1NIISIMTPZCI6IK15DDZZVVD2WWDKS253WHVLVE9XAC0ZNFZDRSJK3ADDOTFHVDKT4YUKIFQ.EYJPC3MIOIJ0DHR***”
%总接收百分比%x平均速度时间电流
数据加载上载总左速度
100 668 100 668 0 49 0 0:00:13 0:00:13--::--152HTTP/1.1 200正常
日期:2021年3月9日星期二09:35:52 GMT
内容类型:text/html;字符集=utf-8
内容长度:668
连接:保持活力
X-Powered-By:Express
ETag:W/“29c-/QY+HmD5p/HwK1AOeM+b3H5wbI0”
你好,库伯内特斯!
您好,从第一次部署开始!
豆荚:
你好-库伯内特斯-第一-8477fc565d-gb22w
节点:
Linux(4.19.157)
如何从auth url获取响应头?如果您使用的是自定义头,如果不遵循HTTP头,Nginx将删除您的deader 当您在标题中使用
\uuu
时,这主要是可能的
在这种情况下,您可以更新Nginx configmap并重新启动Nginx PODs以允许和传递自定义头
您可以打开Nginx的配置映射并更新配置
enable-underscores-in-headers: "true"
Nginx配置映射示例
apiVersion: v1
data:
enable-underscores-in-headers: "true"
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
name: nginx-configuration
namespace: ingress-nginx
您是否使用自定义标题?默认情况下,如果不遵循HTTP标准,Nginx将删除标头。是,这些是自定义标头。什么是http标准nginx检查?您在头文件中使用了吗?不,我没有使用(下划线),但我使用-(Hypen)哦,好的。理想情况下,HTTP标准建议仅使用-(连字符)。如果可以,请尝试更新configmap。我遇到了类似的问题。我从标题中删除了下划线,但仍然无法获取响应标题。我现在没有在响应头中使用任何特殊字符。您是否更新了您的confimap?是的,已更新,但没有luckcustom头对我有效。您从auth url获得的自定义响应头可以作为后端服务的请求头看到?