Frage

Ich möchte meine lokale Entwicklung Maschine so zu konfigurieren, dass alle Anträge auf *.local zu localhost umgeleitet werden. Die Idee ist, dass ich mehrere Websites entwickeln, kann ich nur vhosts in den Apache site1.local genannt, site2.local usw., und haben sie alle Entschlossenheit localhost, während Apache entsprechend eine andere Website dient.

Ich bin auf Windows XP.

Ich habe versucht, das Hinzufügen

127.0.0.1       *.local

In meiner c:\windows\system32\drivers\etc\hosts Datei, auch versucht:

127.0.0.1       .local

Keiner von denen scheinen zu arbeiten.

Ich weiß, ich kann sie auf verschiedenen Portnummern einrichten, aber das ist ein Schmerz, da sie schwer zu merken, welcher Port welche ist.

Ich will nicht einen lokalen DNS-Server oder etwas schwer zu Setup haben, irgendwelche Vorschläge?

War es hilfreich?

Lösung

Acryl DNS Proxy (kostenlos, Open Source) macht den Job. Es erstellt einen Proxy-DNS-Server (auf Ihrem eigenen Computer) mit einer eigenen Host-Datei. Die Hosts-Datei akzeptiert Platzhalter.

Download von der offiziellen Seite

http://mayakron.altervista.org/support/browse.php?path=Acrylic&name = Startseite

Konfigurieren von Acrylic DNS Proxy

Acrylic DNS Proxy konfigurieren, installieren Sie es aus den obigen Link dann gehen Sie zu:

  1. Start
  2. Programme
  3. Acryl DNS Proxy
  4. Config
  5. Edit Custom Hosts-Datei (AcrylicHosts.txt)

Fügen Sie die Folowing Zeilen am Ende der Datei ein:

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

Starten Sie den Acrylic DNS Proxy-Dienst:

  1. Start
  2. Programme
  3. Acrilic DNS Proxy
  4. Config
  5. Restart Acryl-Service

Sie müssen auch Ihre DNS-Einstellungen in Ihrem Netzwerk-Interface-Einstellungen anzupassen:

  1. Start
  2. Systemsteuerung
  3. Netzwerk und Internet
  4. Netzwerkverbindungen
  5. LAN-Verbindung Eigenschaften
  6. TCP / IPv4

"Folgende DNS-Serveradresse":

Preferred DNS Server: 127.0.0.1

Wenn Sie dann diese Antwort mit jeremyasnyder Antwort kombinieren (mit VirtualDocumentRoot) Sie können dann automatisch Setup-domains / virtuellen Hosts, indem Sie einfach ein Verzeichnis zu erstellen.

Andere Tipps

Um Ihre Frage zu beantworten, können Sie keine Platzhalter in der Hosts-Datei verwenden unter Windows.

Wenn Sie jedoch wollen nur die Hosts-Datei ändern, um neue Seiten zu machen arbeiten .... Sie Ihren Apache wie diese konfigurieren können, und Sie müssen die Bearbeitung nicht halten es config:

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

Im Grunde eine kurze Zusammenfassung auf meinem Setup basiert, fügen Sie folgendes zu Ihrem apache.conf-Datei:

 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>

Dies ermöglicht es mir, einen Eintrag hinzuzufügen, wie:

127.0.0.1       test.dev

und dann das Verzeichnis machen, c. \ Xampp \ sites \ dev \ test und legen Sie die notwendigen Dateien dort und es funktioniert einfach

Die andere Option ist <Directory> Tags in apache.conf zu verwenden, und verweist auf den Seiten von http: // localhost / Projekt / .

Ich glaube nicht, dass es möglich ist.

Sie trotzdem die Apache VirtualRoot Einträge jedes Mal ändern müssen Sie einen neuen Standort und Standort hinzufügen, so dass es keine große Arbeit die neuen Namen in der Windows-vhost-Datei syncronise.

Update: bitte die nächste Antwort überprüfen und die Kommentare zu dieser Antwort. Diese Antwort ist 6 Jahre alt und nicht mehr korrekt.

Um die großen Vorschläge hinzuzufügen schon hier, XIP.IO ist ein fantastischer Wildcard DNS Server, die öffentlich zugänglich sind.

ist
      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

(Die Fähigkeit, nicht-Loopback-Adressen angeben, ist fantastisch für die Test-Sites auf iOS-Geräten, wo man nicht eine Host-Datei zugreifen kann.)

Wenn Sie dies mit einigen der Apache-Konfiguration in anderen Antworten erwähnt kombinieren, können Sie möglicherweise hinzufügen Virtual mit Null-Setup .

Ich fand einen Eintrag über die Verwendung von Windows-Hosts-Datei , die auch sagt „Nein Platzhalter sind nicht zulässig. "

In der Vergangenheit haben Habe ich nur noch die zusätzlichen Einträge in der Hosts-Datei, weil (wie zuvor gesagt), ist es nicht so viel zusätzliche Arbeit, wenn Sie bereits über die Apache-Konfigurationsdatei bearbeiten.

die Hosts-Datei bearbeiten ist weniger ein Schmerz, wenn Sie „ipconfig / flushdns“ von der Windows-Eingabeaufforderung ausführen, anstatt den Computer neu zu starten.

Sie können Ihren Netzwerkadministrator in Einrichten einer Domain für Sie (sagen ‚evilpuppetmaster.hell‘) und mit der Wildcard dort sprechen, so dass alles (* .evilpuppetmaster.hell ') beschließt, Ihre IP

Wir haben diese Arbeiten mit Wildcard-DNS in unserem lokalen DNS-Server: ein A Datensatz so etwas wie *.local -> 127.0.0.1 hinzufügen

Ich denke, dass die Netzwerkeinstellungen benötigen für Maschinen im Netz den gewählten Domain-Suffix in der Domänensuffixsuchliste Liste haben, so dass Sie vielleicht .local mit Ihrem Unternehmen der internen Domäne (zB .int) und fügen Sie dann eine Sub-Domain ersetzen möchten wie .localhost.int deutlich zu machen, was es ist.

So *.localhost.int für alle im Netzwerk 127.0.0.1 würde beheben, und Konfigurationsdatei Einstellungen für alle Entwickler würden „einfach funktionieren“, wenn Endpunkte aus, dass die Sub-Domain hängen z.B. site1.localhost.int, site2.localhost.int Das ist so ziemlich das Schema wir eingeführt haben.

dnsmasq sieht auch schön, aber ich habe es noch nicht ausprobiert: http://ihaveabackup.net/2012/06/ 28 / using-Platzhalter-in-the-Hosts-Datei /

Ich habe einen einfachen DNS-Proxy in Python geschrieben. Es wird Platzhalter Einträge in / etc / hosts lesen. Siehe hier: http://code.google. com / p / marlon-tools / Quelle / browse / tools / dnsproxy / dnsproxy.py

Ich habe in Linux & Mac OS X getestet, aber noch nicht in Windows.

Sie können versuchen, AngryHosts , die eine Art und Weise zur Verfügung gestellt, um Platzhalter und reguläre Ausdrücke zu unterstützen. Eigentlich ist es eine Host-Datei Erweiterung und Management-Software.
Weitere Merkmale gesehen werden kann @ http://angryhosts.com/features/

Ich verwende DNSChef das zu tun.

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

Sie haben die App herunterladen, in Linux oder Mac Sie müssen Python um es auszuführen. Windows hat ihre eigene exe.

Sie müssen eine INI-Datei mit Ihren DNS-Einträgen erstellen, zum Beispiel

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

Dann müssen Sie die dns-Anwendung mit Administratorrechten starten

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

oder in Fenstern

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

Schließlich müssen Sie Setup als einzigen DNS Ihre lokale Host-Umgebung (Netzwerk, Schnittstelle, dns oder ähnliche oder in Linux /etc/resolv.conf).

Das ist es

Ich habe dieses einfache Werkzeug an die Stelle des Hosts zu nehmen. Reguläre Ausdrücke werden unterstützt. https://github.com/stackia/DNSAgent

Eine Beispielkonfiguration:

[
    {
        "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"
    }
]

ich kein Verbot schriftlich finden konnte, sondern durch Konvention, die Datei mit den Windows-Hosts folgt eng der UNIX-Hosts-Datei, und Sie können nicht Wildcard Hostnamen Verweise in diese Datei setzen.

Wenn Sie die man-Seite lesen, heißt es:

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

Auch wenn es sagt,

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

das ist aus praktischer Ebene nicht wahr.

Grundsätzlich ist der Code, der in der Datei / etc / hosts-Datei sieht keine Wildcard unterstützen.

Die Abhilfe ist es, alle Einträge erstellen im Voraus, vielleicht einen Skript verwenden, ein paar hundert Einträge auf einmal zu setzen.

@petah und Acrylic DNS Proxy ist die beste Antwort, und am Ende verweist er die Fähigkeit, Multi-Site unter Verwendung eines Apache zu tun, die @jeremyasnyder nach unten ein wenig weiter beschreibt ...

... aber in unserem Fall testen wir ein Multi-Tenant-Hosting-System und so die meisten Domains wir gehen auf den gleichen virtualhost testen wollen, während ein paar andere an anderer Stelle gerichtet sind.

So in unserem Fall Sie einfach verwenden regex Platzhalter in der ServerAlias Richtlinie, wie so ...

ServerAlias *.foo.local

Hier ist die gesamte Konfiguration für diejenigen, die versuchen, das Ziel zu erreichen (Platzhalter in dev Umgebung dh XAMPP - dieses Beispiel alle Standorte übernimmt zu gleichen Code-Basis zeigt)

hosts-Datei (fügen Sie einen Eintrag)

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

127.0.0.1   example.local

httpd.conf Konfiguration (enable vhosts)

Datei: \ XAMPP \ etc \ httpd.conf

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

httpd-vhosts.conf Konfiguration

Datei: XAMPP \ etc \ zusätzliche \ 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>

Starten Sie Apache

erstellen pac-Datei:

Speichern als whatever.pac wo immer Sie wollen und dann die Datei laden in das Netzwerk des Browser> Proxy> auto_configuration Einstellungen (nachladen, wenn Sie dies ändern)

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

Sie können echoipdns hierfür verwenden ( https://github.com/zapty/echoipdns ).

Durch die Ausführung echoipdns local alle Anforderungen für .local Subdomains auf 127.0.0.1 weitergeleitet werden, so dass jede Domain mit xyz.local etc wird auf 127.0.0.1 lösen. Sie können auch andere Suffix verwenden nur mit dem Namen möchten Sie lokale ersetzen.

Echoipdns ist noch leistungsfähiger, wenn Sie Ihre URL von anderen Maschinen verwenden möchten in Netzwerk Sie es noch mit Null-Konfiguration verwenden können.

Für z.B. Wenn Ihr Gerät IP-Adresse ist 192.168.1.100 könnten Sie jetzt einen Domain-Namen xyz.192-168-1-100.local verwenden, die 192.168.1.100 immer lösen wird. Diese Magie wird durch die echoipdns getan, indem im zweiten Teil des Domain-Namen auf der IP-Adresse suchen und die gleiche IP-Adresse auf dem DNS-Abfrage zurück. Sie werden die echoipdns auf der Maschine laufen haben, von dem Sie das Remote-System zugreifen möchten.

echoipdns können auch Setup als eigenständige DNS-Proxy, also nur um auf diese DNS verweisen, können Sie nun alle oben genannten Vorteile nutzen, ohne jedes Mal einen speziellen Befehl ausgeführt wird, und Sie können es auch von mobilen Geräten verwendet werden.

So im Wesentlichen vereinfacht dies die Wildcard-Domain-DNS-Entwicklung für die lokalen als auch Team-Umgebung.

echoipdns funktioniert auf Mac, Linux und Windows.

Hinweis: Ich bin Autor für echoipdns

.

Konfiguration für nginx Config Auto Sub-Domain mit Acrylic DNS Proxy

  

auto.conf Datei für Ihre nginx-Sites Ordner

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;
    }
}

In der Acryl-Datei 127.0.0.1 example.com *.example.com beherbergt und Acryl-Dienst neu starten. $ Zweig -. Ihre Subdomainnamen

Setzen Sie anstelle von root / var / www / html / $ Zweig / public; Ihr Projektpfad

Sie können einen dynamischen DNS-Client wie http://www.no-ip.com . Dann mit einem externen DNS-Server CNAME * .mydomain.com zu mydomain.no-ip.com.

Während Sie nicht einen Platzhalter wie das hinzufügen können, können Sie die vollständige Liste der Websites hinzufügen, die Sie benötigen, zumindest für die Prüfung, die für mich funktioniert gut genug, in Ihre Hosts-Datei, die Sie gerade hinzufügen:

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top