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.dev
과 api.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.dev
과 127.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 설정을 지정해야합니다.