Изменить: если у вас есть идея, как улучшить вопрос или какие детали в нем отсутствуют, оставьте комментарий.
Я пытаюсь развернуть nginx в качестве обратного прокси-сервера, чтобы я мог открывать файлы, обслуживаемые Apache, без предоставления базовых учетных данных для аутентификации, которые требуются Apache. Мой план состоит в том, чтобы предоставить базовые учетные данные для аутентификации «статически» в заголовках, отправляемых с прокси на Apache, чтобы пользователь мог получить доступ к файлам, не имея (или не видя / не зная) учетных данных.
Apache требует базовой аутентификации через https. Обратный прокси-сервер, который должен быть развернут, сам проксируется nginx, который обрабатывает входящий трафик на хост (докер). Входящий узел (докера) nginx слушает только 443, трафик на / внутри хоста (докера) - это http.
Итак, настройка такова:
https >> [dockerhost ingress nginx] >> http >> [nginx reverse proxy] >> https >> [apache file server (basic auth)]
Я использую последний образ докера nginx, без изменений (просто добавляю conf). В качестве прокси-сервера dockerhost я использую https://github.com/jwilder/nginx-proxy. Apache обслуживает файлы из Ящик для хранения Hetzner. Я не могу видеть или изменять его конфигурацию, Хетцнер говорит, что они не могут мне помочь, поскольку официально не поддерживают такой тип установки. Их последний ответ был:
Нашему Apache не нужны особые заголовки. Все, что необходимо, - это запрос через правильное имя хоста (из-за SNI) и правильные учетные данные через SLL / HTTPS на порту 443.
Напрямую, без прокси-сервера nginx, я могу получить доступ к файлам на Apache после прохождения основного запроса аутентификации в браузере или через curl.
Когда я пытаюсь получить доступ к файлам через прокси и пытаюсь передать учетные данные «статически» в качестве заголовка в конфигурации nginx, я получаю только 404-е (от Apache).
Но я могу (и это меня сбивает) получить доступ к файлам через прокси при проксировании без «статической» базовой аутентификации и просто предоставив свои учетные данные в командной строке.
Таким образом, похоже, что он проходит базовую аутентификацию, но не может получить доступ к файлам, что сбивает меня с толку.
Мой первоначальный подход заключался в том, чтобы просто использовать блок местоположения, предоставленный здесь @Shai: Как использовать nginx для прокси-сервера на хост, требующий аутентификации?
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://6.6.6.6:80;
proxy_set_header Authorization "Basic a2luZzppc25ha2Vk";
}
Но это приводит к описанному выше поведению. С тех пор я просто начал экспериментировать с комментированием и добавлением различных директив (например, тех, что указаны здесь: Как заставить nginx передавать заголовок HTTP_AUTHORIZATION в Apache), но безрезультатно.
Благодарен за ЛЮБЫЕ указатели.
Привет, Уилл
Попробуйте прокси, используя явные учетные данные:
proxy_pass http://user:secret@6.6.6.6:80;