Назад | Перейти на главную страницу

nginx, HTTP-аутентификация apache

У меня есть обратный прокси-сервер nginx, который загружается в кеш-лак с бэкэндом apache.

PHP работает как процесс fastcgi, запущенный из apache.

Я пытался заставить работать некоторое программное обеспечение php, однако в основном диалоговом окне HTTP-аутентификации не принимались никакие имена пользователей или пароли. Я немного покопался и придумал это, чтобы вставить файл .htaccess:

RewriteEngine On
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]

Это устранило проблему аутентификации с помощью базовой HTTP-аутентификации.

Теперь я пытался выяснить, что именно это было сделано, поэтому мой вопрос: почему добавление этого правила перезаписи заставило аутентификацию начать работать?

Все, что я мог придумать на данный момент, это то, что где-то в цепочке nginx -> varnish -> apache, apache не получал заголовки auth. Я хотел бы понять, что здесь происходит, чтобы я мог реализовать изменение на уровне сервера, которое предотвратит появление этого где-либо еще.

Может кто-нибудь уточнить?

Спасибо

Потеря отслеживания HTTP-аутентификации не является проблемой nginx или Лак.

Это правило перезаписи не предназначено для аутентификация поля заголовка доступны для Apache но к Fast-CGI бэкэнд (предполагается, что аутентификация должна распознаваться внутри PHP).

Аутентификация заголовки обычно скрыты от Fast-CGI. Ты можешь

  • либо использовать это RewriteRule взломать, чтобы установить REMOTE_USER переменная окружения вручную;

  • или mod_fastcgi конфигурация переменная для передачи заголовков в Fast-CGI:

FastCgiServer:
[...]

-pass-header header (none)

Имя заголовка HTTP-запроса, передаваемого в среде запроса. Эта опция делает доступным содержимое заголовков, которые обычно недоступны (например, авторизация) для среды CGI.

[...]