2017-06-15 15 views
1

Nginxサーバーにすべての認証を設定しましたが、パスワード認証のために/var/www/html/t/sms/plivoのすべてのファイルを除外します。私は別のパスを使用しようとしましたが、ブラウザから/var/www/html/t/sms/plivoの下のファイルにアクセスしようとすると、常にパスワードを要求します。Nginxのパスワード認証から1つのディレクトリを除外

以下は私の/etc/nginx/sites-available/defaultファイル

server { 
     listen 80 default_server; 
     listen [::]:80 default_server; 

     root /var/www/html; 

     index index.php index.html index.htm index.nginx-debian.html; 

     server_name _; 

     auth_basic "Private Property"; 
     auth_basic_user_file /etc/nginx/.htpasswd; 

     #no password for the plivo folder so we can recieve messages! 
     location = /t/sms/plivo/ { 
       auth_basic off; 
       allow all; # Allow all to see content 
     } 

     location/{ 
       try_files $uri $uri/ =404; 
     } 

     location ~ \.php$ { 
       include snippets/fastcgi-php.conf; 
       fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
     } 

     location ~ /\.ht { 
       deny all; 
     } 
} 

答えて

1

location =構文は、その下のURIのすべてを1つのURIと一致していません。また、正規表現locationブロックが干渉しないようにするには、^~修飾子を使用する必要があります。 locationブロックの評価順序に関する規則については、this documentを参照してください。

/t/sms/plivo/の下にPHPファイルがある場合は、それらを処理するためにネストされた場所ブロックを追加する必要があります。例えば

location ~ \.php$ブロックが既にあなたの構成内の同じ名前のブロックに加えて、ある

location ^~ /t/sms/plivo/ { 
    auth_basic off; 
    allow all; # Allow all to see content 

    location ~ \.php$ { 
     include snippets/fastcgi-php.conf; 
     fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
    } 
} 

こと。また、denyルールが表示されない限り、おそらくallow allステートメントは必要ありません。

関連する問題