我的服务器中有这个 nginx conf -
server {
listen *:80;
server_name kibana_proxy;
location = /auth {
internal;
set $query '';
if ($request_uri ~* "[^\?]+\?(.*)$") {
set $query $1;
}
# add_header X-debug-message "Parameters being passed $is_args$args" always;
proxy_pass http://127.0.0.1:8080/login/internal?$query;
}
location / {
proxy_pass http://127.0.0.1:5601/;
proxy_http_version 1.1;
auth_request /auth;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
因此,在 /auth 响应 http 状态 200 后,请求参数会附加到 proxy_pass,这会导致 http 状态 400 错误,并且我看不到受保护的 webapp(在本例中为 Kibana)。
我尝试在 /auth 位置下使用proxy_set_header X-Original-URI $request_uri;
和附加 /auth url $is_args$args
,但请求参数没有传递给 /auth API,这就是为什么这个正则表达式匹配并创建查询字符串 ($query)。
如何确保 proxy_pass (kibana) url 没有任何请求参数?