Squidman, iOS 기기, SSL 및 Docker 장치 192.168.178.57 IP가있는 MacBook Pro 1

iOS 기기에서 다른 nginx Docker 컨테이너 (SSL을 관리하는 역방향 프록시) 뒤에있는 Docker 컨테이너에서 실행중인 웹 사이트와 API에 모두 액세스하려고합니다.

그래서 나는 가지고있다:
1 IP를 가진 iOS 장치 192.168.178.57
IP가있는 MacBook Pro 1 개 192.168.178.64
nockx가 2 개있는 1 개의 Docker 컨테이너 server_name 설정 : app.devapi.dev, 둘 다 자체 서명 된 SSL 인증서 사용 /etc/hosts points에는 다음 항목이 있습니다.

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.

스쿠 만 템플릿을 사용하면 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.

맥북 네트워크 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.dev127.0.0.1 api.dev 너의 ~에게 /etc/hosts.

그런 다음 macOS 및 iOS 장비의 DNS를 다음으로 변경하십시오. 192.168.178.64 (초기 질문 다음).


답변

[ 보류 중 (특정 상황에서는 답이 맞지만 때로는 틀린 경우도 있음) – 공사중 ]

iOS는 api.dev와 app.dev가 어디에 있는지, 그리고 어떤 단서인지 없습니다. hosts 파일의 항목은 로컬 호스트에만 유효합니다.

iOS 기기를 jailbreaking하지 않고 iOS 호스트 파일을 수정할 수 없으므로 MacBook Pro에 DNS 서버 (예 : brew + dnsmasq)를 설정하고 iOS의 DNS 설정을 지정해야합니다.