Контейнер Apache с Состоянием Сервера

Кто-то имеет, здесь устанавливают успешно апачский с состоянием сервера в контейнере для предоставления доступа от хоста? Я уже попробовал - параметрический усилитель добавлять-хоста в докере, чтобы затем позволить тот хост в файле конфигурации, но я все еще получаю Запрещенное сообщение об ошибке

httpd файл конфигурации для состояния сервера установлен как:

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from mainserver
</Location>

Я создаю контейнер докера с этой командой: docker run -e 80:80 httpdimage /usr/sbin/httpd -DFOREGROUND

От хоста затем я делаю тест с этой вихревой командой: curl http://localhost/server-status

И я получаю затем сообщение об ошибке:

Запрещенный

У Вас нет разрешения получить доступ/server-status на этом сервере.

0
задан 18 February 2015 в 12:10
1 ответ

Здесь может происходить несколько вещей.

Во-первых, из с точки зрения вашего контейнера, ваш хост имеет адрес вашего моста docker0 ; это маршрут по умолчанию внутри вашего контейнера, поэтому вы можете получить его следующим образом:

host_address=$(ip route | awk '$1 == "default" {print $3}')

У вас может быть сценарий ENTRYPOINT или что-то подобное, чтобы заменить его в вашей конфигурации Apache при запуске контейнера, что даст вам что-то вроде :

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 172.47.42.1
</Location>

Если вы используете Apache 2.4, это не сработает. В Apache 2.4 директивы Allow и Deny были заменены на новый синтаксис, поэтому вам действительно нужно:

<Location /server-status>
    SetHandler server-status
    Require ip 172.17.42.1
</Location>

Это то, что наконец сработало в моей системе.

0
ответ дан 24 November 2019 в 08:48

Теги

Похожие вопросы