NGINXマルチロケーションブロックマッチング

NGINXマルチロケーションブロックマッチング

RaspbianがインストールされたRaspberryPiを持っていて、パブリックwwwフォルダをhtpasswdで保護し、phpファイルを正しく渡し、.htpasswdと.dbファイルを拒否したいと思います。

しかし、これは私の設定では機能しません。ローカルネットワーク()のブラウザでサイトを呼び出すとhttp://192.168.0.12/test/page.php正しく表示されますが、認証は不要で、設定が拒否されたにもかかわらず.htpasswdファイルと.dbファイルをダウンロードできます。

何が問題なの?最初に一致する位置ブロックのみを実行できますか?これをどのようにバイパスできますか?


"/usr/share/nginx/www"のフォルダ構造:

test
  - data.db
  - page.php
  - .htpasswd
index.html
index.php
.htpasswd

私のnginxサーバーの設定:

server {
    #listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

    root /usr/share/nginx/www;
    index index.html index.htm index.php;

    # Make site accessible from http://localhost/
    server_name localhost;

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ /index.html;
            # Uncomment to enable naxsi on this location
            # include /etc/nginx/naxsi.rules
    }

    location /doc/ {
            alias /usr/share/doc/;
            autoindex on;
            allow 127.0.0.1;
            allow ::1;
            deny all;
    }

    #pass the PHP scripts to PHP-FPM server listening on unix socket
    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
    }

    location ~ /testDb {
            auth_basic "Admin Login";
            auth_basic_user_file /usr/share/nginx/www/test/.htpasswd;
    }

    # deny access to .ht files
    location ~ \.ht {
            deny all;
    }

    # deny access to .db files
    location ~ \.db {
            deny all;
    }
}

関連情報