Базовая аутентификация Nginx PHP-FPM

Базовая аутентификация Nginx PHP-FPM

У меня nginxустановлено php-fpmна Debian Squeeze.
Дерево каталогов такое:

  • /var/www/мойсайт
    • индекс.php
    • секретная_папка_1
      • admin.php
      • статический.html
    • секретная_папка_2
      • admin.php
      • статический.html
    • картинки
    • img01.jpg

Мне нужно закрыть secret_folder_1и secret_folder_2с basic_auth. Теперь конфиг выглядит так:

location ~ /secret_folder_1/.+\.php$
{
        root /var/www/mysite/;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME  /var/www/mysite$fastcgi_script_name;
        include        fastcgi_params;
        auth_basic "Restricted Access";
        auth_basic_user_file /path/to/.passwd;
}

location ~ /secret_folder_1/.*
{
        root /var/www/mysite/;
        auth_basic "Restricted Access";
        auth_basic_user_file /path/to/.passwd;
}

Та же конфигурация для secret_folder_2.

Это нормально? Я имею в виду, что первое место для обслуживания phpфайлов в ограниченной папке, а второе место для обслуживания статических файлов.

Можно ли это упростить?

решение1

Вложенные расположения могут быть лучше:

location /secret_folder_1 {
    root /var/www/mysite/;
    auth_basic "Restricted Access";
    auth_basic_user_file /path/to/.passwd;

    location ~* \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        include        fastcgi.conf;
    }
}

Обратите внимание, что параметр SCRIPT_FILENAME следует определять с помощью $document_rootпеременной, а не жестко закодировать /var/www/mysite/:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

Связанный контент