Этот вопрос закрыт для ответов, так как повторяет вопрос Как пользоваться auth_request Nginx?
voker2005
@voker2005

Как сделать кастомную страницу авторизации в Nginx используя функцию «auth_request» или «auth_basic»?

Здравствуйте коллеги.

Стоит задача сделать кастомную страницу авторизации на веб-сервере 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 мы увидем такое окно:
5d6a603cb48c3006232317.png

Но по задумке это выглядит просто и хочется чтобы форма ввода логина и пароля была с фирменным дизайном, а именно чтобы открылась веб страничка (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 в котором реализована данная конфигурация.
  • Вопрос задан
  • 887 просмотров
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
фсе проще
https://stackoverflow.com/questions/3079031/login-...

ну только если вы не стрелок
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы