Domanda

Voglio configurare la mia macchina di sviluppo locale in modo che tutte le richieste per *.local vengano reindirizzate a localhost. L'idea è che mentre sviluppo più siti, posso semplicemente aggiungere vhosts ad Apache chiamati site1.local, site2.local ecc. E farli risolvere tutti in c:\windows\system32\drivers\etc\hosts, mentre Apache serve di conseguenza un sito diverso.

Sono su Windows XP.

Ho provato ad aggiungere

127.0.0.1       *.local

nel mio <=> file, ho provato anche:

127.0.0.1       .local

Nessuno dei due sembra funzionare.

So di poterli impostare su numeri di porta diversi, ma è una seccatura dato che è difficile ricordare quale porta è quale.

Non voglio installare un server DNS locale o qualcosa di difficile, qualche suggerimento?

È stato utile?

Soluzione

Il proxy DNS acrilico (gratuito, open source) fa il lavoro. Crea un server DNS proxy (sul tuo computer) con il suo file host. Il file hosts accetta caratteri jolly.

Scarica dal sito Web ufficiale

http://mayakron.altervista.org/support/browse.php ? path = acrilico amp &; name = casa

Configurazione del proxy DNS acrilico

Per configurare il proxy DNS acrilico, installalo dal link sopra quindi vai a:

  1. Inizio
  2. Programmi
  3. Proxy DNS acrilico
  4. Configurazione
  5. Modifica file host personalizzato (AcrylicHosts.txt)

Aggiungi le seguenti righe alla fine del file:

127.0.0.1   *.localhost
127.0.0.1   *.local
127.0.0.1   *.lc

Riavvia il servizio proxy DNS acrilico:

  1. Inizio
  2. Programmi
  3. Proxy DNS acrilico
  4. Configurazione
  5. Riavvia servizio acrilico

Dovrai anche modificare le impostazioni DNS nelle impostazioni dell'interfaccia di rete:

  1. Inizio
  2. Pannello di controllo
  3. Rete e Internet
  4. Connessioni di rete
  5. Proprietà connessione alla rete locale
  6. TCP / IPv4

Imposta " Usa il seguente indirizzo del server DNS " ;:

Preferred DNS Server: 127.0.0.1

Se poi combini questa risposta con la risposta di jeremyasnyder (usando VirtualDocumentRoot) puoi quindi impostare automaticamente domini / host virtuali semplicemente creando una directory.

Altri suggerimenti

Per rispondere alla tua domanda, non puoi utilizzare caratteri jolly nel file hosts in Windows.

Tuttavia, se si desidera modificare il file hosts solo per far funzionare i nuovi siti .... è possibile configurare Apache in questo modo e non è necessario continuare a modificarne la configurazione:

http://postpostmodern.com/instructional/a-smarter-mamp/

Fondamentalmente un breve riepilogo basato sulla mia configurazione, aggiungi quanto segue al tuo file apache.conf:

 LoadModule vhost_alias_module modules/mod_vhost_alias.so

 NameVirtualHost *:80

  <Directory "/xampp/sites">
      Options Indexes FollowSymLinks Includes ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all 
  </Directory>

  <VirtualHost *:80>
      VirtualDocumentRoot c:/xampp/sites/%-1/%-2+/
  </VirtualHost>

Questo mi permette di aggiungere una voce come:

127.0.0.1       test.dev

e quindi crea la directory, c: \ xampp \ sites \ dev \ test e inserisci i file necessari e funziona.

L'altra opzione è usare <Directory> tag in apache.conf e fare riferimento alle pagine da http: // localhost / project / .

Non penso che sia possibile.

Devi comunque modificare le voci di virtualroot di apache ogni volta che aggiungi un nuovo sito e una nuova posizione, quindi non è un grande lavoro sincronizzare il nuovo nome nel file vhost di Windows.

Aggiornamento: controlla la risposta successiva e i commenti su questa risposta. Questa risposta ha 6 anni e non è più corretta.

Per aggiungere ai fantastici suggerimenti già qui, XIP.IO è un fantastico DNS jolly server disponibile pubblicamente.

      myproject.127.0.0.1.xip.io  -- resolves to -->   127.0.0.1
  other.project.127.0.0.1.xip.io  -- resolves to -->   127.0.0.1
   other.machine.10.0.0.1.xip.io  -- resolves to -->   10.0.0.1

(La possibilità di specificare indirizzi non loopback è fantastica per testare siti su dispositivi iOS in cui non è possibile accedere a un file host.)

Se lo combini con alcune delle configurazioni di Apache menzionate in altre risposte, puoi potenzialmente aggiungere VirtualHosts con zero setup .

Ho trovato un post su Uso del file host di Windows che dice anche quot; Non sono ammessi caratteri jolly. "

In passato, ho appena aggiunto le voci aggiuntive al file hosts, perché (come detto in precedenza), non è molto lavoro extra quando si sta già modificando il file di configurazione di Apache.

La modifica del file hosts è meno complicata quando si esegue " ipconfig / flushdns " dal prompt dei comandi di Windows, anziché riavviare il computer.

Potresti chiedere al tuo amministratore di rete di impostare un dominio per te (ad esempio "evilpuppetmaster.hell") e di avere il jolly in modo che tutto (* .evilpuppetmaster.hell ") si risolva nel tuo IP

Funzioniamo utilizzando DNS jolly nel nostro server DNS locale: aggiungi un A registra qualcosa come *.local -> 127.0.0.1

Penso che le tue impostazioni di rete dovranno avere il suffisso di dominio scelto nell'elenco di ricerca dei suffissi di dominio per le macchine in rete, quindi potresti voler sostituire .local con il dominio interno della tua azienda (ad esempio .int) quindi aggiungi un sottodominio come .localhost.int per chiarire a cosa serve.

Quindi *.localhost.int sarebbe risolto in 127.0.0.1 per tutti gli utenti della rete e le impostazioni del file di configurazione per tutti gli sviluppatori sarebbero " funzionerebbe solo " se gli endpoint pendono da quel sottodominio, ad es. site1.localhost.int, site2.localhost.int Questo è praticamente lo schema che abbiamo introdotto.

Anche

dnsmasq sembra carino, ma non l'ho ancora provato: http://ihaveabackup.net/2012/06/ 28 / i-hosts usando-jolly-in-file /

Ho scritto un semplice proxy DNS in Python. Leggerà le voci jolly in / etc / hosts. Vedi qui: http://code.google. com / p / Marlon-tools / source / browse / strumenti / dnsproxy / dnsproxy.py

Ho testato in Linux & amp; Mac OS X, ma non ancora in Windows.

Puoi provare AngryHosts , che ha fornito un modo per supportare caratteri jolly ed espressioni regolari. In realtà, è un software di gestione e miglioramento dei file host.
Altre funzioni sono disponibili @ http://angryhosts.com/features/

Sto usando DNSChef per farlo.

https://thesprawl.org/projects/dnschef/

Devi scaricare l'app, in Linux o Mac hai bisogno di Python per eseguirla. Windows ha il suo exe.

È necessario creare un file ini con le voci dns, ad esempio

[A]
*.google.com=192.0.2.1
*.local=127.0.0.1
*.devServer1.com=192.0.2.3

Quindi è necessario avviare l'applicazione DNS con i privilegi di amministratore

sudo python dnschef.py --file myfile.ini -q

o in Windows

runas dnschef.exe --file myfile.ini -q

Infine, devi impostare come unico DNS il tuo ambiente host locale (rete, interfaccia, dns o simili o in linux /etc/resolv.conf).

Questo è tutto

Ho creato questo semplice strumento per sostituire gli host. Le espressioni regolari sono supportate. https://github.com/stackia/DNSAgent

Una configurazione di esempio:

[
    {
        "Pattern": "^.*$",
        "NameServer": "8.8.8.8"
    },
    {
        "Pattern": "^(.*\\.googlevideo\\.com)|((.*\\.)?(youtube|ytimg)\\.com)$",
        "Address": "203.66.168.119"
    },
    {
        "Pattern": "^.*\\.cn$",
        "NameServer": "114.114.114.114"
    },
    {
        "Pattern": "baidu.com$",
        "Address": "127.0.0.1"
    }
]

Non sono riuscito a trovare un divieto per iscritto, ma per convenzione, il file hosts di Windows segue da vicino il file hosts UNIX e non è possibile inserire riferimenti a nomi host con caratteri jolly in quel file.

Se leggi la pagina man, dice:

DESCRIPTION
     The hosts file contains information regarding the known hosts on the net-
     work.  For each host a single line should be present with the following
     information:

           Internet address
           Official host name
           Aliases

Anche se dice,

     Host names may contain any printable character other than a field delim-
     iter, newline, or comment character.

questo non è vero a livello pratico.

Fondamentalmente, il codice che osserva il file / etc / hosts non supporta una voce jolly.

La soluzione alternativa è quella di creare in anticipo tutte le voci, magari utilizzare uno script per inserire duecento voci contemporaneamente.

Il proxy DNS @petah e Acrylic è la risposta migliore e alla fine fa riferimento alla possibilità di fare più siti usando un Apache che @jeremyasnyder descrive un po 'più in basso ...

... tuttavia, nel nostro caso stiamo testando un sistema di hosting multi-tenant e quindi la maggior parte dei domini che vogliamo testare vanno allo stesso virtualhost, mentre un paio di altri sono diretti altrove.

Quindi nel nostro caso, usate semplicemente i caratteri jolly regex nella direttiva ServerAlias, in questo modo ...

ServerAlias *.foo.local

Ecco la configurazione totale per coloro che cercano di raggiungere l'obiettivo (caratteri jolly nell'ambiente di sviluppo, ad esempio XAMPP - questo esempio presuppone che tutti i siti puntino alla stessa base di codice)

file hosts (aggiungi una voce)

file:% SystemRoot% \ system32 \ drivers \ etc \ hosts

127.0.0.1   example.local

configurazione httpd.conf (abilita vhosts)

file: \ XAMPP \ etc \ httpd.conf

# Virtual hosts
Include etc\extra\httpd-vhosts.conf

configurazione httpd-vhosts.conf

file: XAMPP \ etc \ extra \ httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin admin@example.local
    DocumentRoot "\path_to_XAMPP\htdocs"
    ServerName example.local
    ServerAlias *.example.local
#    SetEnv APP_ENVIRONMENT development
#    ErrorLog "logs\example.local-error_log"
#    CustomLog "logs\example.local-access_log" common
</VirtualHost>

riavvia apache

crea file pac:

salva come qualunque cosa.pac dove vuoi e poi carica il file nella rete del browser > proxy > impostazioni auto_configuration (ricarica se lo modifichi)

function FindProxyForURL(url, host) {
  if (shExpMatch(host, "*example.local")) {
    return "PROXY example.local";
  }
  return "DIRECT";
}

Puoi usare echoipdns per questo ( https://github.com/zapty/echoipdns ).

Eseguendo echoipdns local tutte le richieste per i sottodomini .local vengono reindirizzate a 127.0.0.1, quindi qualsiasi dominio con xyz.local ecc. si risolverà in 127.0.0.1. Puoi usare qualsiasi altro suffisso anche semplicemente sostituisci local con il nome che desideri.

Echoipdns è ancora più potente, quando vuoi usare il tuo url da altre macchine in rete puoi ancora usarlo con configurazione zero.

Ad es. Se l'indirizzo IP della tua macchina è 192.168.1.100 ora puoi usare un nome di dominio xyz.192-168-1-100.local che si risolverà sempre in 192.168.1.100. Questa magia viene fatta dagli echoipdns guardando l'indirizzo IP nella seconda parte del nome di dominio e restituendo lo stesso indirizzo IP sulla query DNS. Dovrai eseguire gli echoipdns sul computer da cui vuoi accedere al sistema remoto.

echoipdns può anche essere configurato come proxy DNS autonomo, quindi puntando semplicemente su questo DNS, ora puoi utilizzare tutti i vantaggi di cui sopra senza eseguire un comando speciale ogni volta e puoi persino usarlo da dispositivi mobili.

Quindi, in sostanza, questo semplifica lo sviluppo DNS basato su dominio jolly per ambiente locale e team.

echoipdns funziona su Mac, Linux e Windows.

NOTA: sono autore di echoipdns.

Configurazione per il sottodominio automatico config nginx con proxy DNS acrilico

  

file auto.conf per la cartella dei siti nginx

server {
    listen 80;
    server_name ~^(?<branch>.*)\.example\.com;
    root /var/www/html/$branch/public;  

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_log  /var/log/nginx/$branch.error.log error;

    sendfile off;

    client_max_body_size 100m;

    location ~ \.php$ {
       try_files $uri /index.php =404;
       fastcgi_pass php-fpm:9000;
       fastcgi_index index.php;
       fastcgi_buffers 16 16k;
       fastcgi_buffer_size 32k;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

Aggiungi al file host Acrylic 127.0.0.1 example.com *.example.com e riavvia il servizio Acrylic. $ branch - il tuo nome di sottodominio.

Imposta invece di root / var / www / html / $ branch / public; il percorso del tuo progetto

Puoi utilizzare un client DNS dinamico come http://www.no-ip.com . Quindi, con un server DNS esterno CNAME * .mydomain.com su mydomain.no-ip.com.

Sebbene non sia possibile aggiungere un carattere jolly del genere, è possibile aggiungere l'elenco completo dei siti necessari, almeno per i test, che funziona abbastanza bene per me, nel file hosts, è sufficiente aggiungere:

127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local
...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top