Squidman, iOS-Geräte, SSL und Docker

Ich möchte von einem iOS-Gerät aus auf eine Website und eine API zugreifen, die beide in Docker-Containern hinter einem anderen nginx-Docker-Container (Reverse-Proxy, der SSL verwaltet) ausgeführt werden.

Ich habe also:
1 iOS-Gerät mit IP 192.168.178.57
1 MacBook Pro mit IP 192.168.178.64
1 Docker-Container mit nginx mit zwei server_nameEinstellungen: app.devund api.dev, beide mit selbstsignierten SSL-Zertifikatpunkten /etc/hostshaben diese Einträge:

192.168.178.64 app.dev
192.168.178.64 api.dev

~/proxy.pacenthält diese Einträge:

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 ist auf Port konfiguriert 9090und erlaubte Clients sind 192.168.178.0/24.

Die Squidman-Vorlage ermöglicht den Zugriff auflocalhost

# 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%

192.168.178.64Der Proxy des iOS-Geräts ist als Port konfiguriert 9090.

Die MacBooks-Netzwerke Automatic Proxy Configurationzeigen auf die ~/proxy.pacDatei.

Ich kann Websites von der iOS-Website wie http://apple.com durchsuchen .

Ich kann https://app.dev durchsuchen und https://api.dev vom MacBook aufrufen.

Ich kann https://app.dev weder durchsuchen noch https://api.dev vom iOS-Gerät aus aufrufen .

Was mache ich falsch?

Habe dies bereits mit versucht, /etc/hostsaber mit /private/etc/hosts/hat es auch nicht behoben.
Ich werde es in einer virtuellen Umgebung einrichten, um Ihr Problem zu verstehen
Haben Sie eine kurze Einrichtungsanleitung (oder andere Anweisungen) zum Installieren des Reverse-Proxy-Docker-Image (SSL) (welches haben Sie verwendet?) Und der anderen beiden Nginx-Docker-Images?
Schauen Sie sich beim nächsten Mal xip.io an – oft ist es viel einfacher, nur FQDN für alle nicht routbaren IPs zu verwenden, die Sie zum Testen von Proxys, Containern, VMs und Geräten benötigen.

Antworten (2)

Ich habe es mit diesem Docker-Container gelöst: https://github.com/jpillora/docker-dnsmasq

Folgen Sie einfach den Anweisungen und fügen Sie eg 127.0.0.1 app.devund 127.0.0.1 api.devzu Ihrer hinzu /etc/hosts.

Ändern Sie dann den DNS auf dem macOS- und iOS-Gerät auf 192.168.178.64(nach der ersten Frage).

[ in der Warteschleife (die Antwort ist unter Umständen richtig, aber manchmal falsch) - im Aufbau ]

iOS hat keine Ahnung, wo und was api.dev und app.dev sind. Die Einträge in der hosts-Datei gelten nur für den lokalen Host.

Da Sie die Hosts-Datei von iOS nicht ändern können, ohne das iOS-Gerät zu jailbreaken, müssen Sie einen DNS-Server (z. B. brew + dnsmasq) auf Ihrem MacBook Pro einrichten und die DNS-Einstellung von iOS darauf verweisen.