Даже если вы ещё не знаете что такое Basic Auth, вы наверняка уже с ней сталкивались, например, при входе в интерфейс настройки роутера. Это механизм авторизации по имени пользователя и паролю на уровне веб-сервера. Такая авторизация поддерживается и в Apache и в Nginx.
В этой статье мы разберемся как настроить Basic Auth Nginx, для определённого маршрута или для всего сайта.
Окно авторизации Basic Auth выглядит вот так:
Думаю теперь вы знаете о чём идёт речь. Такую авторизацию можно настроить для определённого URL, для всего сайта или для всех сайтов. Но сначала надо создать файл со списком пользователей и паролей. Для этого используется утилита htpasswd. Синтаксис у команды такой:
$ sudo htpasswd -c /путь/к/файлу имя_пользователя
Опция -c используется для создания нового файла, для редактирования уже существующих её использовать не надо. Например:
sudo htpasswd -c /etc/nginx/basic.auth admin
Утилита два раза спросит пароль. Пароль вводится но не отображается. Это так должно быть для безопасности. После того, как файл будет создан можно переходить к настройке Nginx.
Для того чтобы защитить паролем все ваши сайты просто добавьте эти директиву в секцию http файла /etc/nginx/nginx.conf:
auth_basic "Restricted area";auth_basic_user_file /etc/nginx/auth.basic;
Для защиты только определённой URL добавьте эти же директивы в нужный блок location. Например для /wp-admin/admin-ajax.php:
location /wp-admin/admin-ajax.php {auth_basic "Restricted area";auth_basic_user_file /etc/nginx/auth.basic;}
Для WordPress такой location лучше размещать вложенным в location /. Тогда будут работать все правила описанные там, плюс ваше на защиту доступа. Если же наоборот надо разрешить доступ для определённого location то директива будут выглядеть так auth_basic “off”. Например:
location /wp-admin/admin-ajax.php {auth_basic "off";fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_pass 127.0.0.1:9002;fastcgi_index index.php;include /etc/nginx/fastcgi_params;}
Здесь разместить этот блок location вложенным уже не получиться, поэтому следует добавить в него обработку php иначе веб-сервер просто предложит пользователям скачать php скрипт, к которому они обращаются.
Как видите, авторизация по паролю nginx настраивется не так уж сложно, надо только правильно сформулировать блок location. Если у вас остались вопросы, спрашивайте в комментариях!
Источник: https://losst.ru/ Материал распространяется под лицензией CC-BY-SA
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies