Php

對單個文件的無限制訪問 + FastCGI with basic_auth 用於 nginx 中的整個域

  • November 22, 2010

限制對除一個文件之外的所有文件的訪問的最簡單方法是什麼,其中整個域是通過 FastCGI 提供的?

使用以下 conf 時出現的問題是我無法訪問 /dir (在某種循環中要求我輸入密碼,正確的登錄名+密碼不讓我進入)。

此外,相同的 fastCGI 配置在 location = /unrestricted_file.php 和 location ~ .php$ 中重複。

結構是:

server {
   location = /unrestricted_file.php {
      # FastCGI conf...
      break;
   }

   location / {
       root 
       index

       auth_basic "Restricted";
       auth_basic_user_file file;
   }

   location /dir {
       auth_basic "Restricted";
       auth_basic_user_file file;
   }


  location ~ \.php$ {
      auth_basic "Restricted";
      auth_basic_user_file file;
      # fastcgi_pass...
  }
}

您可以使用 關閉位置的身份驗證auth_basic off。這會將您的配置文件縮短為如下所示:(未經測試)

server {
   auth_basic "Restricted";
   auth_basic_user_file file;

   location = /unrestricted_file.php {
      auth_basic off;
      # fastcgi_pass...
   }

   location / {
       root 
       index

   }

  location ~ \.php$ {
      # fastcgi_pass...
  }
}

“循環”來自這樣一個事實,即 auth for/dir被指定了兩次(//dir)。要放大這一點,請嘗試將文本更改為"Restricted path /"and"Restricted path /dir"並且您的循環應該交替顯示兩條消息。

引用自:https://serverfault.com/questions/204761