Кто-то имеет, здесь устанавливают успешно апачский с состоянием сервера в контейнере для предоставления доступа от хоста? Я уже попробовал - параметрический усилитель добавлять-хоста в докере, чтобы затем позволить тот хост в файле конфигурации, но я все еще получаю Запрещенное сообщение об ошибке
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 на этом сервере.
Здесь может происходить несколько вещей.
Во-первых, из с точки зрения вашего контейнера, ваш хост имеет адрес вашего моста 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>
Это то, что наконец сработало в моей системе.