Apache переназначает apache в контейнере докеров

В настоящее время у меня есть сервер Apache с несколькими виртуальными хостами.

Однако я хочу использовать другую настройку Apache на одном виртуальном хосте. Моя идея состоит в том, чтобы установить apache с разными настройками внутри контейнера докеров. Но тогда как мне его настроить? Если бы у меня был apache внутри док-контейнера, ему пришлось бы слушать другой порт, верно? И апачу за пределами докера придется как-то перенаправлять трафик на апач внутри докера?

На данный момент мой конфиг выглядит так:

<Virtualhost *:80>
    ServerName host1.com
    ...
</Virtualhost>

<Virtualhost *:80>
    ServerName host2.com
    ...
</Virtualhost>

Скажем, я хочу, чтобы host2.com обрабатывался внутри apache внутри докера. Я «полагаю», я мог бы сделать перенаправление в апаче вне докера с помощью:

<Virtualhost *:80>
    ServerName host2.com
    RedirectMatch ^(.*)$ http://host2.com:81$1
</Virtualhost>

а затем иметь это внутри докера apache внутри:

<Virtualhost *:81>
    ServerName host2.com
    ...
</Virtualhost>

Но я бы хотел, чтобы перенаправление/перезапись/переназначение были внутренними, чтобы клиент не мог видеть никаких изменений. Это возможно?


person fredrik.hjarner    schedule 29.03.2014    source источник


Ответы (1)


Не могли бы вы использовать тонкий слой для проксирования каждого конкретного контейнера (ваш host1 и host2)? Для этого вы можете использовать Nginx, Hipache или какой-либо другой прокси-сервер для отправки трафика на два разных сайта, содержащихся в разных контейнерах Docker.

В этом примере у вас будет три контейнера. Тот, который принимает и проксирует трафик на два других контейнера. Я создал несколько внешних портов только для примера ниже.


Nginx (или другой) контейнер обратного прокси: внутренний порт 80, внешний порт 80

  • host1.com -> 49000
  • host2.com -> 49001

Контейнер Docker Apache 1: внутренний порт 80, внешний порт 49000 <Virtualhost *:80> ServerName host1.com ... </Virtualhost>

Контейнер Docker Apache 2: внутренний порт 80, внешний порт 49001 <Virtualhost *:80> ServerName host2.com ... </Virtualhost>

person johncosta    schedule 29.03.2014
comment
Большое спасибо! Звучит как хорошее предложение. Я никогда не использовал Nginx или Hipache, но посмотрю на них. - person fredrik.hjarner; 30.03.2014