Quiero acceder a un sitio web y una API que se ejecutan en contenedores Docker detrás de otro contenedor Docker nginx (SSL de administración de proxy inverso) desde un dispositivo iOS.
Así que tengo:
1 dispositivo iOS con IP 192.168.178.57
1 MacBook Pro con IP 192.168.178.64
1 contenedor Docker que ejecuta nginx que tiene dos server_name
configuraciones: app.dev
y api.dev
ambos puntos con certificados SSL autofirmados /etc/hosts
tienen estas entradas:
192.168.178.64 app.dev
192.168.178.64 api.dev
~/proxy.pac
contiene estas entradas:
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 está configurado en el puerto 9090
y los clientes permitidos son 192.168.178.0/24
.
La plantilla de Squidman permite el acceso alocalhost
# 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%
El proxy del dispositivo iOS está configurado como 192.168.178.64
puerto 9090
.
MacBooks Networks Automatic Proxy Configuration
apunta al ~/proxy.pac
archivo.
Puedo navegar por sitios web desde el sitio web de iOS como http://apple.com .
Puedo navegar por https://app.dev y llamar a https://api.dev desde la MacBook.
No puedo navegar por https://app.dev ni llamar a https://api.dev desde el dispositivo iOS.
¿Qué estoy haciendo mal?
Lo resolví usando este contenedor Docker: https://github.com/jpillora/docker-dnsmasq
Simplemente siga las instrucciones y agregue, por ejemplo, 127.0.0.1 app.dev
y 127.0.0.1 api.dev
a su archivo /etc/hosts
.
Luego cambie el DNS en el dispositivo macOS e iOS a 192.168.178.64
(siguiendo la pregunta inicial).
[ en espera (la respuesta es correcta en ciertas circunstancias pero a veces incorrecta) - en construcción ]
iOS no tiene idea de dónde y qué son api.dev y app.dev. Las entradas en el archivo de hosts son válidas solo para el host local.
Dado que no puede modificar el archivo de hosts de iOS sin liberar el dispositivo iOS, debe configurar un servidor DNS (por ejemplo, brew + dnsmasq) en su MacBook Pro y apuntar la configuración DNS de iOS hacia él.
Alejandro Zeitler
/etc/hosts
pero usando/private/etc/hosts/
tampoco lo arreglé.klanomath
klanomath
bmike