Я хочу получить доступ к веб-сайту и 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.
Что я делаю не так?
Я решил это, используя этот контейнер 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.
Александр Цейтлер
/etc/hosts
но использование/private/etc/hosts/
также не помогло.кланомат
кланомат
bmike