2014-01-28 3 views
1

Привет, У меня есть дискурс, установленный через сервер Docker и Apache на том же сервере Ubuntu 12.04.Discourse Docker и Apache на одном сервере

Дискурс контейнер подвергается порт 81 и Apache на порт 80.

Как я могу настроить Apache, чтобы показать Apache Web как «something.com» и дискурс грузчиком на что-то вроде «forum.something.com» ,

Я использовал это для дискурса: https://github.com/discourse/discourse_docker

+0

Как правило, старайтесь не запускать пользовательские серверы на порту под 1024: http://www.w3.org/Daemon/User/Installation/PrivilegedPorts.html. Порты 8080 - 8090 подходят для запуска нескольких веб-серверов. – Popinou

ответ

1

Вы можете использовать любой обратный прокси-сервер, чтобы сделать это.

У вас есть один контейнер для apache, один контейнер для дискурса (или один с обоими), и вы не открываете никаких портов (не используйте -p). Однако вы можете использовать инструкцию PORT, если вы создаете изображение через файл докеров.

Как только контейнеры будут запущены, вы должны иметь к ним доступ через <ip container apache>:80 и <ip container discourse>:81 от хоста.

Теперь вы можете запустить новый контейнер с обратным прокси. Если вы использовали PORT, вы можете даже связать контейнеры (то есть docker run -link <apache container name>:apache -link <discourse container name>:discourse), чтобы иметь ips на env.

Вы можете использовать обратные прокси, такие как apache, nginx или hipache.

Когда вы запускаете обратный прокси-контейнер, вам необходимо указать -p 0.0.0.0:80:80, чтобы иметь его доступную форму вне хоста.

Пример конфигурации Nginx для обратного прокси-сервера с использованием ссылок докеров: https://github.com/creack/prod/blob/master/nginx/nginx.conf#L27

0

я использовать отдельный виртуальный хост для этого. Я предполагаю, что вы хотите использовать SSL.

<VirtualHost *:443> 
     ServerName forum.something.com 
     ProxyPreserveHost On 
     ProxyPass  "/" "http://localhost:2080/" 
     ProxyPassReverse "/" "http://localhost:2080/" 
     RequestHeader set X-Forwarded-Proto "https" 
     DocumentRoot /home/pub 

     [... SSL stuff ...] 

</VirtualHost> 

виртуальные хосты не-SSL перенаправляет на SSL виртуальный хост:

<VirtualHost *:80> 
    ServerName forum.something.com 

    # Use the next lines if you want to exclude the 
    # Let's Encrypt verification URL from proxied to Discourse 
    # otherwise, only use the Redirect clause. 
    <LocationMatch "^/(?!\.well-known)"> 
        Redirect permanent/https://forum.something.com/ 
    </LocationMatch> 
    DocumentRoot /home/pub 

Файл container.yml для Docker изображения Discource содержит

expose: 
    - "127.0.0.1:2080:80" # http 

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

Смежные вопросы