2012-05-07 9 views
0

Nginxを実行しているArch Linuxサーバーで、私は正しくcgitをセットアップしました。私は1つのディレクトリ/pub/を除き、基本認証パスワードでcgitを保護したい。 the documentationに見られるように、私はコンテキストに認証を入れ、/pub/ディレクトリのlocationコンテキストで例外を取得することを考えました。私はパスを正しく取得するためにthis linkを試しました。Nginxとcgitのauth_basic

ここでは、対応する部分のnginxの設定ファイルです。

server { 
    listen  80; 
    server_name git.nicosphere.net; 
    index cgit.cgi; 
    gzip off; 

    auth_basic "Restricted"; 
    auth_basic_user_file /srv/gitosis/.htpasswd; 

    location/{ 
     root /usr/share/webapps/cgit/; 
    } 

    location ^~ /pub/ { 
     auth_basic off; 
    } 

    if (!-f $request_filename) { 
     rewrite ^/([^?/]+/[^?]*)?(?:\?(.*))?$ /cgit.cgi?url=$1&$2 last; 
    } 

    location ~ \.cgi$ { 
     gzip off; 
     include fastcgi_params; 
     fastcgi_pass 127.0.0.1:9001; 
     fastcgi_index cgit.cgi; 
     fastcgi_param SCRIPT_FILENAME /usr/share/webapps/cgit/cgit.cgi; 
     fastcgi_param DOCUMENT_ROOT /usr/share/webapps/cgit/; 
    } 
} 

これは、どのURLでも認証が必要です。テストを簡単にするために、私は認証なしでルートを残そうとしましたが、認証付きの/pub/しかありませんでした。この場合、パスワードをまったく要求しません。これまでのところ、私はすべてのことも何も保護することができませんでした。

私のおおよその英語のあなたの助けと私の謝罪のおかげで、私はあなたがこのような何かしたいと思います

答えて

1

server { 
    listen  80; 
    server_name git.nicosphere.net; 
    index cgit.cgi; 
    gzip off; 

    root /usr/share/webapps/cgit; 

    # $document_root is now set properly, and you don't need to override it 
    include fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME $document_root/cgit.cgi; 

    location/{ 
     try_files $uri @cgit; 
    } 

    # Require auth for requests sent to cgit that originated in location/ 
    location @cgit { 
     auth_basic "Restricted"; 
     auth_basic_user_file /srv/gitosis/.htpasswd; 

     gzip off; 
     # rewrites in nginx don't match the query string 
     rewrite ^/([^/]+/.*)?$ /cgit.cgi?url=$1 break; 
     fastcgi_pass 127.0.0.1:9001; 
    } 

    location ^~ /pub/ { 
     gzip off; 
     rewrite ^/([^/]+/.*)?$ /cgit.cgi?url=$1 break; 
     fastcgi_pass 127.0.0.1:9001; 
    } 
} 
+0

おかげで、 これは良いですが、奇妙な行動があったが、私は '/パブ/'に行くとき、それは、パスワードの入力を私に尋ねます「キャンセル」を押すと、CSSと.PNGのないページが表示されます。ルートを試すと、401ページが表示されます。私が正しく認証すれば、すべてがうまくいく(CSS/PNGで)。 私はまだ問題はあると思うが、それは良い。 –

+0

私にとって完璧に動作します、ありがとうございます。 –