2016-04-06 41 views
4

クエリパラメータを元のURLからauth_requestハンドラ/サービスに転送できるかどうかを確認しようとしていますか? headerまたはcookie経由 https://example.com/api/user?token=237263864823674238476nginx auth_request:元のクエリパラメータにアクセス

そしてません:

ユーザーは、このようなクエリパラメータとしてAPIトークンを追加することができるはずです。認証サービスでtokenパラメータに何らかの形でアクセスできますか?または、tokenクエリパラメータをNGINXのカスタムヘッダーに記述しますか?

location = /api/user { 
    auth_request /auth; 
    proxy_set_header X-auth-token-from-query $arg_token; 

    proxy_pass http://<url>; 
} 

/authエンドポイントがX-auth-token-from-queryヘッダを得ることはありませんが、200を返した後、上流プロキシは、ヘッダーを取得している:
は、これまでのところ、これをしようとしました。

答えて

5

auth-requestエンドポイントにもurl(uri)を渡すことをお勧めします。あなたは一度にこれを行うことができます:

location = /api/auth { 
    proxy_set_header X-Original-URI $request_uri; 
    proxy_set_header X-Original-METHOD $request_method; 
    proxy_pass_request_body off; 
    proxy_set_header Content-Length ""; 

    proxy_pass http://<url>; 
} 

ボーナス:私はまた方法を渡しました! :多田:

1

 location = /auth { 
      internal; 
      set $query ''; 
      if ($request_uri ~* "[^\?]+\?(.*)$") { 
       set $query $1; 
      } 
      proxy_pass    http://myauthpoint?$query; 
      proxy_pass_request_body off; 
      proxy_set_header   Content-Length ""; 
     } 
私のために働いた次の
関連する問題