У меня есть обратный прокси-сервер 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.
[...]