Здравствуйте коллеги.
Стоит задача сделать кастомную страницу авторизации на веб-сервере
Nginx используя функцию "
auth_request" или "
auth_basic". Возможно ли это вообще или я заблуждаюсь и зря трачу время?
По задумке:
У меня есть домен, к примеру
my.domain.com, чтобы он открылся нужно авторизоваться на этом веб-сервере, т.е. нужно настроить
auth_basic, а делается это очень просто, не более 5 минут. Тоесть создадим файл пароля с помощью утилиты htpasswd и просто добавляем в конфиг виртуального хоста это:
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
При попытке открыть домен
my.domain.com мы увидем такое окно:
Но по задумке это выглядит просто и хочется чтобы форма ввода логина и пароля была с фирменным дизайном, а именно чтобы открылась веб страничка (index.php) с полями ввода логина, пароля, каптчой и собственным графическим оформлением.
Нужно чтобы при попытке открыть в браузере домен
my.domain.com пользователя редиректило на другой домен, а именно на
login.domain.com, далее автоматом открывается страничка
https://login.domain.com/index.php где в красивой форме пользователь вводит логин и пароль для авторизации на веб-сервере Nginx и в следствии редиректится на домен
my.domain.com с которого была запрошена веб-сервером авторизация.
Для этого финта
auth_basic мне кажется не подойдет, так как почитав документацию я не увидел продуманной возможности сделать подобные настройки, но зато увидел потенциал в функции
auth_request где есть функция неких подзапросов, которые в ответ если дают код 200, получается что в php можно редиректить обратно на изначально запрошенную ссылку
my.domain.com, т.к. сессия браузера будет авторизована и можно работать на веб сервере с этим сайтом.
----
Для авторизации, переадресация на другой домен необязательна, т.к. редирект можно сделать например на кастомный путь того же домена, например на
my.domain.com/super_aut/index.php
----
Ближе к вопросу:
Вот например конфиг виртуального хоста:
server {
listen 80;
server_name my.domain.com;
# При открытии сайта, запрашивает авторизацию на веб-сервере nginx
location / {
auth_request /auth;
...
}
# Говорим серверу что путь к авторизации ( /auth) находится тут, по ссылке http://login.domain.com:
location = /auth {
proxy_pass http://login.domain.com;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
Мне в таком случае не совсем понятна технология авторизации, где мы и как администрируем право доступа, на стороне PHP? Что регулирует аутентификацию, логин и пароль настраиваем в php а в nginx настроить обмен кодами ответа, или как. Подскажите где указывать логин и пароль для авторизации на сервере, буду рад любой полезной информации по этому поводу.
Так же хотелось узнать каким должен быть php. Был бы рад какой либо информации на этот счет, особенно шаблону PHP в котором реализована данная конфигурация.