http nginx / apache авторизация

http nginx / apache авторизация


freelanceland
Удаленная работа для начинающих и профессионалов
1) Создаем файл с паролем.
1.1) Создаем файл с паролем OpenSSL Utilities
Если на вашем сервере установлен OpenSSL, вы можете создать файл паролей без дополнительных пакетов. Мы создадим скрытый файл .htpasswd в каталоге конфигурации / etc / nginx для хранения наших комбинаций имени пользователя и пароля.
 sudo sh -c "echo -n 'sammy:' >> /etc/nginx/.htpasswd"

Затем добавьте зашифрованную запись пароля для имени пользователя, набрав:

sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

Вы можете повторить этот процесс для дополнительных имен пользователей. Вы можете увидеть, как имена пользователей и зашифрованные пароли хранятся в файле, набрав:

cat /etc/nginx/.htpasswd
Output
sammy:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1
1.2) Создаем файл с паролем использую Apache Utilities

Хотя OpenSSL может шифровать пароли для аутентификации Nginx, многим пользователям проще использовать целевую утилиту. Утилита htpasswd, найденная в пакете apache2-utils, хорошо выполняет эту функцию.

Установите пакет apache2-utils на свой сервер, введя:

sudo apt-get update
sudo apt-get install apache2-utils

Теперь у вас есть доступ к команде htpasswd. Мы можем использовать это для создания файла паролей, который Nginx может использовать для аутентификации пользователей. Мы создадим для этой цели скрытый файл под названием .htpasswd в нашем каталоге конфигурации / etc / nginx.

В первый раз, когда мы используем эту утилиту, нам нужно добавить параметр -c для создания указанного файла. Мы указываем имя пользователя (sammy в этом примере) в конце команды для создания новой записи в файле:

sudo htpasswd -c /etc/nginx/.htpasswd sammy

Вам будет предложено указать и подтвердить пароль для пользователя. Оставьте аргумент -c для любых дополнительных пользователей, которых вы хотите добавить:

sudo htpasswd /etc/nginx/.htpasswd another_user
2) Конфигурирование nginx авторизации

Теперь, когда у нас есть файл с нашими пользователями и паролями в формате, который Nginx может читать, нам нужно настроить Nginx для проверки этого файла перед тем, как обслуживать наш защищенный контент.
Начните с открытия файла конфигурации блока сервера, к которому вы хотите добавить ограничение. В нашем примере мы будем использовать файл блока сервера по умолчанию, установленный через пакет Nginx:
sudo nano /etc/nginx/sites-enabled/default

Внутри, если комментарии разделены, файл должен выглядеть примерно так:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }
}
Чтобы настроить аутентификацию, вам нужно решить, какой контекст будет ограничен. Среди других вариантов Nginx позволяет устанавливать ограничения на уровне сервера или в определенном месте. В нашем примере мы ограничим весь корневой каталог документа блоком местоположения, но вы можете изменить этот список только для таргетинга на определенный каталог в веб-пространстве:

Внутри этого блока местоположения используйте директиву auth_basic для включения проверки подлинности и выбора имени области, которое будет отображаться пользователю при запросе учетных данных. Мы будем использовать директиву auth_basic_user_file, чтобы указать Nginx на созданный нами файл паролей:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

Сохраните и закройте файл по завершении. Перезапустите Nginx для реализации политики паролей:
sudo service nginx restart

3) Конфигурирование apache авторизации
Аутентификацию можно настроить непосредственно в конфигурационном файле Apache сервера - httpd.conf или в отдельном файле, помещенном в директорию с index страницей сайта. Имя файла - .htaccess.
При первом случае, когда изменения вносятся к конфигурационный файл, необходимо перезапустить Apache сервер чтобы изменения вступили в силу. Во втором случае изменения применяются на лету, как только файлик .htaccess помещается в директорию.
Внимание! При настройке посредством .htaccess, необходимо сначала убедиться, что директива AllowOverride в файле httpd.conf разрешает получение настроек из файла.htaccess.

Прописываем защищаемый ресурс в конфигурацию Apache (в файл httpd.conf или в файле.htaccess)

AuthType - тип аутентификации Basic/Digest.

AuthName - название для области, требующей авторизации. Это название появится в диалоговом окне ввода логина и пароля.

AuthUserFile - местонахождение файла с паролями.

AuthGroupFile - местонахождение файла групп.

Require - требования, необходимые для доступа к защищённой области. Так, значение valid-user позволит произвести авторизацию для любого пользователя, прописанного в файле .htpasswd.

Пример: 

< Directory "/var/www/html/secret">   
   AuthType Basic 
   AuthName "Private Area" 
   AuthUserFile /var/www/html/site/.htpasswd 
   Require valid-user 
< /Directory>

После внесения изменений в файл httpd.conf необходимо перезапустить демон httpd.
---
Теперь проделываем все тоже самое, но в варианте с  файлом .htaccess.
Содержание файла для нашего примера будет следующим:
 AuthType Basic
 AuthName "Private Area"
 AuthUserFile /var/www/html/secret/.htpasswd
 Require user administrator tolik






Подробнее

https://www.digitalocean.com/community/tutorials/how-to-set-up-password-authentication-with-nginx-on-ubuntu-14-04
https://serverfault.com/questions/334755/nginx-php-fpm-basic-auth
http://unixa.ru/web/autentifikatsiya-sredstvami-apache-web-server.html



Также читают

debian11 nginx install
Смена кодировки файла в Linux (из cp1251 в utf8)
phpStorm горячие клавиши

Возврат к списку