Nginx反向代理基本身份验证Base64 Url编码
我在一个我没有参与的web应用程序前面使用了一个反向代理 要自动连接我的用户,我使用Basic Auth。因此,我在url的base 64中传递一个参数,如下所示 不幸的是,url代理背后的web应用程序对查询字符串参数进行了编码。因此,当我的代理在头中传递身份验证时,身份验证不好 这是我的Nginx配置Nginx反向代理基本身份验证Base64 Url编码,nginx,base64,reverse-proxy,Nginx,Base64,Reverse Proxy,我在一个我没有参与的web应用程序前面使用了一个反向代理 要自动连接我的用户,我使用Basic Auth。因此,我在url的base 64中传递一个参数,如下所示 不幸的是,url代理背后的web应用程序对查询字符串参数进行了编码。因此,当我的代理在头中传递身份验证时,身份验证不好 这是我的Nginx配置 server { listen 80; root /usr/share/nginx/www; index index.html index.htm; se
server {
listen 80;
root /usr/share/nginx/www;
index index.html index.htm;
server_name mydomain.com;
location /mywebapp/ {
set $basicAuth "Basic $arg_user";
proxy_pass http://localhost:3524/;
proxy_set_header Authorization $basicAuth;
}
}
如何在不访问代理背后的web应用程序的情况下解决此问题
提前感谢您的回答。0如果我正确理解您的问题,您正在通过nginx进行基本身份验证,并且您不想在web应用程序上接收查询参数?然后,您只需在nginx conf中删除它:
if($query_string~“^(.*)User=(.*)$”{rewrite^(.*)$$uri?permanent;}
头中没有使用my proxy转换我的查询字符串参数。身份验证由后面的web应用程序完成。因此,必须保留查询字符串参数,但不能使用url编码。或者我必须找到另一种方法通过考试好的,我明白。您可以简单地将其作为标头传递,并在web应用程序中解码b64字符串。我建议将经过编码的字符串传递给其他人。我不知道您使用的是哪种语言,但通常您可以(d)e[n]在一行中对bas64字符串进行编码问题在于它不是我的web应用程序。我手头没有:/n您可以编写一个代理请求的应用程序。除了Nginx之外,没有一个真正好的方法将此(业务逻辑)功能添加到Nginx中。如果您想使用Zuul或API网关,还可以查看一下,并将逻辑添加到其中