Esecuzione di MacOX Sierra su MacBook Pro e impostazione dell'ambiente di sviluppo locale con nginx come server Web, ma ho un problema.
Che cosa voglio fare
- Usa dnsmasq come server DNS locale che restituisce
127.0.0.1
come host per il dominio jolly*.develop
(come .dev ora si scontra con ICANN). - Inoltra qualsiasi richiesta irrisolta ai server DNS fornita da DHCP ogni volta che mi collego a una rete in modo da poter risolvere tutti gli altri nomi host (esterni e interni).
Condizioni e vincoli
- Mi muovo tra le reti. La mia rete domestica DHCP è il server DNS come
192.168.1.1
, ma il mio lavoro DHCP fornisce il mio DNS come10.128.x.x
- La rete aziendale con
10.128.x.x
DNS, imposta anche unsearch domain
per gli indirizzi interni. - Sono in Cina, quindi impostare solo un gruppo di server DNS pubblici come
Google or OpenDNS
e127.0.0.1
potrebbe funzionare, ma sono internazionali e vengono rallentati da GFW.
Cosa ho fatto finora
- Ho installato
nginx
ednsmasq
utilizzandohomebrew
. - Servizi in esecuzione utilizzando
sudo brew services start xxx
. ) Questo è così posso eseguire nginx suport 80
e nonport 8080
.) - Imposta
dnsmasq
direttivaaddress=/.develop/127.0.0.1
- Posso verificare che
dnsmasq
funzioni, utilizzandodig
:
dig testing.testing.one.two.three.develop @127.0.0.1
; <<>> DiG 9.8.3-P1 <<>> testing.testing.one.two.three.develop @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46013
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;testing.testing.one.two.three.develop. IN A
;; ANSWER SECTION:
testing.testing.one.two.three.develop. 0 IN A 127.0.0.1
;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Jun 20 12:04:44 2017
;; MSG SIZE rcvd: 71
- L'impostazione del server DNS su
127.0.0.1
inNetwork Preferences
funziona e posso eseguire il ping di questo:
Esempio di ping:
ping -c 1 this.is.a.test.develop
PING this.is.a.test.develop (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.036 ms
--- this.is.a.test.develop ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.036/0.036/0.036/0.000 ms
ma non sono disponibili servizi esterni perché l'unico DNS disponibile è il mio dnsmasq a 127.0.0.1
Il problema
- Sembra che la soluzione semplice sarebbe solo aggiungere
127.0.0.1
+192.168.0.1
all'elenco DNS della mia scheda di rete. Funziona a casa, ma non nella sede aziendale - L'aggiunta del
10.128.x.x
aziendale funzionerebbe ovviamente in ufficio, ma non a casa -
So add both corporate and home DNS to the list?
Questo quindi interromperà qualsiasi altra connessione wifi / ethernet perché non prenderei il loro server DNS DHCP - Non posso semplicemente aggiungere server DNS pubblici (come Google o Open DNS, perché sono in Cina. Devo avere quelli forniti da DHCP, dato che il DNS pubblico è molto lento in Cina)
Mi piacerebbe sapere come altri hanno risolto quello che sembra un setup molto frequente, ma ho dei problemi.
Ho già esaminato due domande separate sullo scambio di stack che hanno problemi simili ma non identici . Le domande sono allegate alla fine di questa domanda [1], [2]. Ciò che queste domande mostrano sono che su macOS, /etc/resolve.conf
ha questo avviso:
nell'intestazione
#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#
Questo suggerisce che qualsiasi modifica non verrà letta da questo file, e altre risposte dalle domande suggeriscono che anche i file in /etc/resolver/*
non saranno letti
Quindi, la mia domanda reale è: c'è un modo per farlo:
- Utilizza sempre 127.0.0.1 prima
- Se non viene trovato, usa il DNS dinamico da qualunque DHCP dia
Perché non hai appena usato gli host?
Diventa l'idea di avere un dominio * .develop e quindi aggiungere semplicemente un singolo sito che utilizza espressioni regolari per risolvere dinamicamente i siti locali è molto interessante!
vale a dire. some-sub-domain.develop
- > /Users/myuser/www/some-sub-domain/
[1] dnsmasq non funziona su Mac OS Sierra
[2] link