2013-05-12 33 views
5

phpMyAdmin、MemcacheMyAdminなどの管理ユーティリティを含むNginx Poweredサイトのディレクトリをパスワードで保護しようとしています。このディレクトリはで私のサイトのルートに配置され403禁止 - Nginx - 正しい資格情報を使用する

:私は使用してディレクトリ内の.htpasswdファイルを作成し

/home/deployer/sites/domain.com/control/ 

domain.com/control/ 

私のサーバー上の絶対パスであります

ファイルは存在し、 "root"ユーザーが所有し、アクセス許可は0644です。

Nginx内のこのドメインの.confファイルでは、次のロケーションブロックを使用して認証を要求します。

location /control { 
    auth_basic   "Restricted Area: Control"; 
    auth_basic_user_file /home/deployer/sites/domain.com/control/.htpasswd; 
    } 

パスワードで保護されたディレクトリに移動すると、ユーザー名とパスワードの入力が求められます。以前に作成したクレデンシャルを入力すると、エラー403の禁止ページが表示されます。

アクセスログは、私がログインプロンプトを打つし、「管理者」ユーザーとしてログインしてることを私に示しています

64.123.456.225 - - [12/May/2013:17:30:48 +0000] "GET /control HTTP/1.1" 401 597 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31" 
64.123.456.225 - admin [12/May/2013:17:30:48 +0000] "GET /control HTTP/1.1" 301 185 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31" 
64.123.456.225 - admin [12/May/2013:17:30:59 +0000] "GET /control/memcache/ HTTP/1.1" 403 199 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31" 

エラーログには、次を示しています。

2013/05/12 17:31:01 [error] 30462#0: *1 directory index of "/home/deployer/sites/domain.com/control/memcache/" is forbidden, client: 64.123.456.225, server: domain.com, request: "GET /control/memcache/ HTTP/1.1", host: "domain.com" 
2013/05/12 17:31:09 [error] 30462#0: *1 directory index of "/home/deployer/sites/domain.com/control/memcache/" is forbidden, client: 64.123.456.225, server: domain.com, request: "GET /control/memcache/ HTTP/1.1", host: "domain.com" 

もしIそのサイトのNginx .confのAuthブロックを削除して、通常のようにページにアクセスできます。

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

答えて

4

これは、アクセス許可、存在しない、または無効なディレクトリインデックスディレクティブによって発生する可能性があります。

パーミッション: wwwがnginxに所有されていて、/ varがrootによって所有されている場合、wwwはvarのパーミッションを継承し、アクセスを拒否します。

インデックス指示: ディレクトリインデックスが使用できないファイルに設定されていると、nginxは403をスローします。この場合、index.phpではなくindex.htmにデフォルト設定されていると思います。

最高の幸運!

+0

これは正しいです。 "index index.php;"を追加しました。ロケーションブロックにロードされ、ロードされます。 非常に高く評価されています。 –

+0

jgpatrick3で別の回答をピギーバックするには、autoindexを使用しようとするとインデックスが問題になる可能性があります。なぜなら、認証が外部ディレクティブから 'autoindex on'を無効にするからです。認証されたゾーン内で「自動索引付け」を行う。 – Dubslow

0

エラーは、認証はありませんが、ディレクトリは、あなたのは とそのコンテンツにアクセスしようとしている:

ウェブサーバは、それがindex.htmlのような既知のインデックスファイルをチェックし、要求を処理
/home/deployer/sites/domain.com/control/memcache/ 

、 インデックスを.phpなど。これらのファイルが見つからない場合は、そのディレクトリ内のすべてのファイルをリストする試みとして解釈します。 これはあなたのnginx設定(これは良い)で禁じられているようです。 メッセージ:

directory index of [...] is forbidden 

そこで私は、ディレクトリ

/home/deployer/sites/domain.com/control/memcache/ 

が空であるか、nginxのは認識してインデックスファイルを含んでいないと思います。
特定のファイルを要求した場合、またはindex.htmlファイルを作成した場合は、403エラーがなくなります。

7

この質問には受け入れられた回答がありますが、私はここでも問題がある別のケースを入れたいので、他の人が私のように苦労する必要はありません。

私はあまりにも正しい資格情報を使用して403を得、インデックスファイルにはそうではありません、ファイルの存在は、ケースでもないと設定できません。このた:ここでの問題は/etc/nginx/.htpasswdは絶対的であるということである

auth_basic "some message"; 
auth_basic_user_file /etc/nginx/.htpasswd; 

実際には同じディレクトリ内を指すパスをnginx.confとします。それは何とかファイルを検索するためにnginxを混同しました。 (何とかと言って、私は完全には理解できません。nginxは絶対パスであり、誰かがより良い説明を持っているなら、コメントで分かち合ってください。

私はそれを変更した場合:

auth_basic_user_file .htpasswd; 

nginxnginx.confと同じディレクトリにそのファイルを見つけることが予想されるので、それは働きました。私はパスがnginxを混同していなかったと思うので、それはまた働い

auth_basic_user_file /home/user/.htpasswd; #and move the file to /home/user too 

:私はそれを変更しても

+0

ええ、私はこれが正解でなければならないと思います。これが私を助けた唯一の答えです。 – m4l490n

0

は、私はそれが何らかの形で誰かを助け場合、私が作るのは難しい苦労ので、私は喜んでいるだろう、

上記のリンクをご確認くださいHEREを.htpasswdの使用nginxの上で「設定方法認証」の溶液を用いて手順を説明してきましたこのことはうまくいく。

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

3

私は同様の問題があったので、私はここに着いた。私はトップレベルのディレクトリを "autoindex on"に設定しました。私は、 "autoindex on;"を繰り返さずに別の宣言( "/ subdirectory")を持つサブディレクトリに対してパスワード保護を追加しました。これは、インデックスファイルを探しているnginxを残していたので、私は "禁じられて"見た。

「autoindex on」を追加すると"/サブディレクトリ"の設定に移動します。サブディレクトリを閲覧するときにディレクトリ一覧が表示されました。

関連する問題