从Nginx Auth子请求中删除请求参数

时间:2020-05-12 23:00:00

标签: nginx nginx-location nginx-reverse-proxy nginx-config

下面是我的Nginx配置文件,我正在其中尝试使用auth子请求对请求进行身份验证。我正面临一个问题。一旦/ auth返回401,它将重定向到Login应用程序,成功身份验证后,它将使用令牌作为请求URL中的参数再次重定向到Nginx应用程序。

喜欢 http://example.com?token=324adwasdwe434fdef

server {
  listen *:80;
  server_name example.com;

# Authrization server 
  location = /auth {
      internal;
      # add_header X-debug-message "Parameters being passed $is_args$args" always;
      proxy_pass http://127.0.0.1:8080/auth;
  }


 location / {

      proxy_pass http://127.0.0.1;
      proxy_http_version 1.1;
      auth_request /auth;
  }

  #if auth retrun 401 user will see the login page 
    location @error401 {
            return 302 http://login.example.com/login/internal;
        }

}

我使用此令牌在/ auth调用返回200上创建一个会话 但是当我返回代理路径时,必须在写入会话cookie

之后从URL中删除此令牌参数。

我尝试了不同的方法,但是它始终出现在最终到达的网址中。

这是我到目前为止尝试过的

server {
  listen *:80;
  server_name example.com;

# Authrization server 
  location = /auth {
      internal;
      # add_header X-debug-message "Parameters being passed $is_args$args" always;
      proxy_pass http://127.0.0.1:8080/auth;
  }


  location / {

#this what I tried to remove the token for the URL on the final proxy pass

      if ($request_uri ~ ^(.*)&token=[a-z0-9]+$) {
                 return 301 $1; } 


      proxy_pass http://127.0.0.1;
      proxy_http_version 1.1;
      auth_request /auth;
  }

  #if auth retrun 401 user will see the login page 
    location @error401 {
            return 302 http://login.example.com/login/internal;
        }

}

0 个答案:

没有答案