Закрывание паролем некоторых разделов сайта
Многие отказались от 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.
Сгенерировать такой файл можно тут.
Recent Comments