Как иметь 2 контейнера докеров, прослушивает один и тот же порт 443 [дубликат]

INNER JOIN - это синтаксис ANSI, который вы должны использовать.

Обычно считается более читаемым, особенно когда вы присоединяетесь к множеству таблиц.

Его также можно легко заменить OUTER JOIN всякий раз, когда возникает необходимость.

Синтаксис WHERE более ориентирован на реляционную модель.

Результат двух таблиц JOIN ed является декартовым произведением таблиц к которому применяется фильтр, который выбирает только те строки с совпадающими столбцами.

Легче это увидеть с синтаксисом WHERE.

Что касается вашего примера, в MySQL ( и в SQL вообще) эти два запроса являются синонимами.

Также обратите внимание, что MySQL также имеет предложение STRAIGHT_JOIN.

Используя этот пункт, вы можете управлять порядком JOIN: какая таблица проверяется во внешнем цикле и какая из них находится во внутреннем цикле.

Вы не можете управлять этим в MySQL с помощью синтаксиса WHERE.

7
задан CraigH 5 August 2015 в 03:19
поделиться

2 ответа

Используйте обратный прокси nginx:

  1. установите Nginx на хост. В Debian / Ubuntu: apt-get install nginx. Примечание. Я предположил, что у вас уже нет apache или другого веб-сервера на хосте ...
  2. Для каждого сайта напишите файл сайта nginx в каталоге /etc/nginx/sites-available, который перенаправляет этот сайт на http-сайт докер-контейнера, который будет работать на каком-то другом заранее установленном порту (например, 2001, 2002, ...). Каждый сайт получает свой собственный файл, как тот, который приведен ниже, но с разными заранее подготовленными портами для каждого сайта. Внешние пользователи получат доступ к ним на порту 80 того же IP-адреса, но с разными именами веб-сайтов, и из этих имен nginx будет обрабатывать необходимые внутренние подключения незаметно.
  3. символизирует файлы сайта, чтобы они отображались в каталоге /etc/nginx/sites-enabled и перезапускали nginx. Позже вы можете удалить одну из этих ссылок и перезапустить nginx, если вам нужно временно отключить доступ к сайту.
  4. запустите контейнеры при перезапуске системы, добавив команды docker run в /etc/rc.local и перенаправляя предварительно назначенный порт хоста (localhost: 2001) в контейнерный порт 80, например docker run -d -p localhost:2001:80 imageA

Если контейнер упал, вы получите ошибку шлюза от nginx. Это может быть настроено для показа пользовательской HTML-страницы. Для большей надежности лучше управлять контейнерами в supervisord или другом диспетчере процессов, который обновляет мертвые процессы.

Вот пример файла сайта nginx для перенаправления на порт 2001:

upstream dockerA { 
         server localhost:2001;
}

server {
       listen 192.168.1.8:80;  // REPLACE WITH HOST NUMERIC IP ADDRESS
       root /var/web/siteAstaticfiles;
       index index.html;
       server_name www.siteA.com;

       location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://dockerA;
        }               
}

В этом примере, хотя локальный каталог диска для файлов HTML настроен для сайта A, он не используется. Вместо этого все запросы отправляются вверх по течению. Я не проверял, можно ли безопасно пропустить строки root и index.

10
ответ дан Paul 4 September 2018 в 09:03
поделиться

Более подходящий способ размещения нескольких веб-сайтов на одном хосте с помощью docker, docker-compose и nginx-proxy: https://blog.florianlopes.io/host-multiple-websites-on-single-host -docker /

0
ответ дан Ales Rebec 4 September 2018 в 09:03
поделиться
Другие вопросы по тегам:

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