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

Как заставить nginx правильно проксировать (включая базовые права аутентификации, установленные в заголовках) Apache?

Изменить: если у вас есть идея, как улучшить вопрос или какие детали в нем отсутствуют, оставьте комментарий.

Ожидаемый результат:

Я пытаюсь развернуть 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;