У меня 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;