2013-02-12 36 views
5

基本認証を使用して認証しているいくつかのIIS Webサーバーの前で、逆方向RPCサーバーとしてnginxをセットアップしようとしています。Nginxリバースプロキシ - パススルー基本認証

(注 - これはnginx providing the auth using a password fileと同じではありません - それはちょうど、ブラウザ/サーバ間のeverythnig marshellingしなければならない) - しかし、繰り返しごとに単一のリソースによって認証の入力を求め取得(画像/ CSS

その種類オフ作業を等)をページ上に表示する。

upstream my_iis_server { 
     server 192.168.1.10; 
} 

server { 
    listen  1.1.1.1:80; 
    server_name www.example.com; 

    ## send request back to my iis server ## 
    location/{ 
    proxy_pass http://my_iis_server; 
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 
    proxy_http_version  1.1; 
    proxy_set_header  Connection ""; 
    proxy_pass_header  Authorization;  
    proxy_redirect off; 
    proxy_buffering off; 
    proxy_set_header  Host   $host; 
    proxy_set_header  X-Real-IP  $remote_addr; 
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

答えて

5

この正確な状況は把握して永遠に連れて行ってくれたが、OSSがそのようである私は推測します。この投稿は1歳ですので、元のポスターがそれを見つけ出した、または放棄したのでしょうか?

  1. IISがrealm文字列は、それがnginxのに送られたものと同じであることを期待しますが、あなたのnginxののserver_nameはリッスンしている場合:

    とにかく、私にとっては問題では、少なくともいくつかのものによって引き起こされました上流側とは異なるアドレスを使用すると、サーバー側WWW-AuthenticateはIISが期待していたものになることはなく、無視します。

  2. 組み込みヘッダーモジュールは、他のWWW-Authenticateヘッダー、特に問題のあるWWW-Authenticate:Negotiateをクリアしません。ヘッダーを使用すると、moreモジュールは古いヘッダーをクリアし、それを伝えるものを追加します。

この後、最終的にSharepoint 2010をNginxにプッシュすることができました。

ありがとうございました。

server { 
    listen 80; 
    server_name your.site.com; 

    location/{ 
      proxy_http_version  1.1; 
      proxy_pass_request_headers on; 
      proxy_set_header  Host   $host; 
      proxy_set_header  X-Real-IP  $remote_addr; 
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 

      #proxy_pass_header  Authorization; //This didnt work for me 
      more_set_input_headers 'Authorization: $http_authorization'; 

      proxy_set_header Accept-Encoding ""; 

      proxy_pass    https://sharepoint/; 
      proxy_redirect   default; 
      #This is what worked for me, but you need the headers-more mod 
      more_set_headers  -s 401 'WWW-Authenticate: Basic realm="intranet.example.com"'; 
    } 
} 
+0

オリジナルポスターは確かにあきらめなかったし、代わりにMicrosoftのIISアプリケーションを試してみました基本とNTMLの認証を問題なく処理したが、SharePoint 2013の最小限のダウンロード戦略(MDS)のいくつかで非常に奇妙な問題が発生したARR(Request Routing) – Ryan

+0

これは参考になるかもしれません:http://serverfault.com/questions/230749/how-to-use-nginx-to-proxy-to-a-host-requiring-authentication – czerasz

+0

@mattこんにちは私はsthのように渡す必要がありますユーザ名:realm = "etc"の代わりにパスワードを入力しても問題ありませんか? – Jonathan

0

私はこれらの症状がnginx/1.10.3であった。私は基本的な認証の下でセキュリティで保護されたサービスを持っていて、nginxはクライアントとサーバの間のリバースプロキシです。要件は、nginxが承認をパススルーすることでした。

サーバーへの最初の要求は、Authorizationヘッダーを通過しました。 2番目のリクエストは単にこのヘッダーをブロックしました。つまり、クライアントはセッションごとに1つのリクエストしか作成できませんでした。

これはCookieと関係がありました。私がブラウザのクッキーをクリアすると、サイクルが繰り返されます。クライアントは認証できましたが、最初の要求だけでした。ブラウザを閉じると同じ効果がありました。

proxy_pass http://$upstream; 

の代わりに::

は私のためのソリューションを使用して、httpsからhttpにアップストリームサーバーを変更することでした

proxy_pass https://$upstream;