Squidman, iOS-устройства, SSL и Docker

Я хочу получить доступ к веб-сайту и API, работающим в контейнерах Docker за другим контейнером Docker nginx (обратный прокси-сервер, управляющий SSL) с устройства iOS.

Итак, у меня есть:
1 устройство iOS с IP-адресом 192.168.178.57
1 MacBook Pro с IP- 192.168.178.64
адресом 1 контейнер Docker с nginx с двумя server_nameнастройками: app.devи api.devоба с использованием самозаверяющих сертификатов SSL /etc/hostsимеют следующие записи:

192.168.178.64 app.dev
192.168.178.64 api.dev

~/proxy.pacсодержит эти записи:

function FindProxyForURL(url, host){
  if (shExpMatch(host, "app.dev")) {
    return "PROXY app.dev:443; DIRECT";
  }
  if (shExpMatch(host, "api.dev")) {
    return "PROXY api.dev:443; DIRECT";
  }
  return "DIRECT";
}

Squidman настроен на порт 9090и разрешенные клиенты 192.168.178.0/24.

Шаблон Squidman позволяет получить доступ кlocalhost

# protect web apps running on the proxy host from external users
# http_access deny to_localhost

# rules for client access go here
http_access allow localhost
%HTTPACCESSALLOWED%

Прокси-сервер устройства iOS настроен как 192.168.178.64порт 9090.

MacBooks Networks Automatic Proxy Configurationуказывает на ~/proxy.pacфайл.

Я могу просматривать веб-сайты с веб-сайта iOS, например http://apple.com .

Я могу просматривать https://app.dev и вызывать https://api.dev с MacBook.

Я не могу просматривать https://app.dev и вызывать https://api.dev с устройства iOS.

Что я делаю не так?

Пробовал это уже с помощью, /etc/hostsно использование /private/etc/hosts/также не помогло.
Я собираюсь настроить его в виртуальной среде, чтобы понять вашу проблему
Есть ли у вас краткое руководство по установке (или другие инструкции) для установки образа докера обратного прокси-сервера (SSL) (какой из них вы использовали?) и двух других образов докера nginx?
Проверьте xip.io в следующий раз — часто гораздо проще просто использовать полное доменное имя для всех немаршрутизируемых IP-адресов, которые вам нужны для прокси, контейнеров, виртуальных машин и устройств для тестирования.

Ответы (2)

Я решил это, используя этот контейнер Docker: https://github.com/jpillora/docker-dnsmasq

Просто следуйте инструкциям и добавьте, например, 127.0.0.1 app.devи 127.0.0.1 api.devв свой /etc/hosts.

Затем измените DNS на устройстве macOS и iOS на 192.168.178.64(после первоначального вопроса).

[ в ожидании (ответ правильный при определенных обстоятельствах, но иногда неправильный) - в разработке ]

iOS понятия не имеет, где и что такое api.dev и app.dev. Записи в файле hosts действительны только для локального хоста.

Поскольку вы не можете изменить файл хостов iOS без джейлбрейка устройства iOS, вам необходимо настроить DNS-сервер (например, brew + dnsmasq) на вашем MacBook Pro и указать на него настройки DNS iOS.