Archive

Archive for March, 2014

Закрывание паролем некоторых разделов сайта

March 1st, 2014 No comments

Многие отказались от apache в пользу связки php-fpm+nginx и других. Причин много, однако часто у многих возникают вопросы.
В Apache существует технология файла .htaccess, которые видит Apache. Однако nginx их не понимает, и понимать не будет. У него технология другая – location.
Этими самыми location’ами можно делать разные интересные вещи, аналогично .htaaccess (переадресации, подмену url обработку тех или иных файлов, запароливание разделов, листинг папок для репозитариев). Возможно со временем, мы рассмотрим больше, но сегодня – я расскажу о замене функционала .htapasswd

Итак, задача – создать закрытый сайт с авторизацией на nginx.
Проблема в том, что решение простое – люди добавляют location, указывают путь до файла с паролями и всё. Но проблема в том, что php перестает обрабатываться после перехода в эту закрытую директорию и загружает .php скрипты.
Решение: добавить обработчик php в location c .htapasswd . Ниже, правильный конфиг-файл:

location ~* (wp-login)\.php$ {
        try_files $uri $uri/ /index.php?args;
        auth_basic           "closed site";
        auth_basic_user_file /var/www/html/site.ru/.htpasswd;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
}

А теперь разберем по порядку.
location ~* (wp-login)\.php$ { – мы объявляем локейшн, назначаем папку и говорим работать с php.
wp-login – папка, раздела сайта, который необходимо закрыть авторизацией.
auth_basic_user_file – файл с логинами-паролями. Хранить в папке с сайтом небезопасно, показал для примера. Кстати, будут работать .htpasswd файлы от Apache.
Сгенерировать такой файл можно тут.

Categories: IT-bullshit, Linux Tags: