Pergunta

Eu quero configurar minha máquina de desenvolvimento local, para que todos os pedidos de *.local são redirecionados para localhost. A ideia é que, como eu desenvolver vários sites, posso apenas acrescentar vhosts para Apache chamado site1.local, site2.local etc, e tê-los todos determinação de localhost, enquanto o Apache serve um site diferente em conformidade.

Estou no Windows XP.

Eu tentei adicionar

127.0.0.1       *.local

para o meu arquivo c:\windows\system32\drivers\etc\hosts, também tentou:

127.0.0.1       .local

Nem de que parecem funcionar.

Eu sei que posso configurá-los em diferentes números de porta, mas isso é uma dor, uma vez que é difícil lembrar qual porta é qual.

Eu não quero ter que configurar um servidor DNS local ou qualquer coisa dura, alguma sugestão?

Foi útil?

Solução

Acrílico DNS Proxy (gratuito, open source) faz o trabalho. Ele cria um servidor DNS proxy (em seu próprio computador) com o seu próprio arquivo de hosts. O arquivo hosts aceita curingas.

Fazer download a partir do site oficial

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

Configurando o Proxy Acrílico DNS

Para configurar Acrílico DNS Proxy, instalá-lo a partir do link acima, em seguida, vá para:

  1. Iniciar
  2. Programas
  3. Acrílico DNS Proxy
  4. Configuração
  5. Edit Custom arquivo Hosts (AcrylicHosts.txt)

Adicione as linhas folowing no final do arquivo:

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

Reinicie o serviço Acrílico Proxy DNS:

  1. Iniciar
  2. Programas
  3. Acrílico DNS Proxy
  4. Configuração
  5. Restart Acrílico Serviço

Você também precisa ajustar sua configuração de DNS em suas configurações de interface de rede:

  1. Iniciar
  2. Painel de controle
  3. Rede e Internet
  4. Conexões de rede
  5. Região local propriedades de conexão
  6. TCP / IPv4

Set "Use o seguinte endereço do servidor DNS":

Preferred DNS Server: 127.0.0.1

Se você, em seguida, combinar esta resposta com a resposta de jeremyasnyder (usando VirtualDocumentRoot) você pode, então, automaticamente domínios de configuração / hosts virtuais, basta criar um diretório.

Outras dicas

Para responder à sua pergunta, você não pode usar curingas no arquivo hosts no Windows.

No entanto, se você quiser mudar apenas o arquivo hosts para fazer novos locais de trabalho .... você pode configurar o Apache como este e você não tem que manter a editá-lo de config:

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

Basicamente, um breve resumo com base na minha configuração, adicione o seguinte ao seu arquivo 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>

Isso me permite adicionar uma entrada como:

127.0.0.1       test.dev

e, em seguida, fazer o diretório, c:. \ Xampp \ Sites \ dev \ teste e colocar os arquivos necessários em lá e ele simplesmente funciona

A outra opção é usar tags <Directory> em apache.conf e referenciar as páginas de http: // localhost / projecto / .

Eu não acho que é possível.

Você qualquer maneira tem que modificar o apache VirtualRoot entradas cada vez que você adicionar um novo site e localização, por isso não é um grande trabalho para syncronise o novo nome para o arquivo vhost do Windows.

Update: por favor, verifique a próxima resposta e os comentários sobre esta resposta. Essa resposta é de 6 anos de idade e não é correto mais.

Para adicionar aos grandes sugestões já está aqui, XIP.IO é um fantástico DNS curinga servidor que está disponível ao público.

      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

(A capacidade de especificar endereços não-loopback é fantástico para testar locais em dispositivos iOS onde você não pode acessar um arquivo hosts.)

Se você combinar isso com um pouco da configuração do Apache mencionado em outras respostas, você pode potencialmente adicionar VirtualHosts com Configuração de zero .

Eu encontrei uma postagem sobre Usando Windows arquivo Hosts, que também diz: "Não wildcards são permitidos. "

No passado, I acabou de adicionar as entradas adicionais para o arquivo hosts, porque (como disse anteriormente), não é que muito trabalho extra quando você já está editando o arquivo de configuração do apache.

Editar o arquivo hosts é menos de uma dor quando você executar "ipconfig / flushdns" a partir das janelas prompt de comando, em vez de reiniciar seu computador.

Você poderia falar o administrador de rede para a criação de um domínio para você (digamos 'evilpuppetmaster.hell') e tendo o curinga lá para que tudo (* .evilpuppetmaster.hell ') resolve para o IP

Temos este trabalho utilizando DNS curinga no nosso servidor DNS local: adicione um registro A algo como *.local -> 127.0.0.1

Eu acho que as configurações de rede precisa ter o sufixo de domínio escolhido na lista de procura de sufixos de domínio para máquinas na rede, de modo que você pode querer substituir .local com domínio interno da sua empresa (por exemplo .int) e, em seguida, adicionar um subdomínio como .localhost.int para deixar claro o que é para.

Assim *.localhost.int iria resolver a 127.0.0.1 para todos na rede e configurações do arquivo de configuração para todos os desenvolvedores seria "apenas trabalho" se endpoints pendurar fora esse subdomínio por exemplo site1.localhost.int, site2.localhost.int Isso é muito bonito o esquema nós introduzimos.

dnsmasq também parece bom, mas eu não tentei ainda: http://ihaveabackup.net/2012/06/ 28 / utilizando-wildcards-in-the-anfitriões-file /

Eu escrevi um proxy dns simples em Python. Ele irá ler entradas curinga em / etc / hosts. Veja aqui: http://code.google. com / p / marlon-tools / fonte / browse / ferramentas / dnsproxy / dnsproxy.py

Eu testei em Linux e Mac OS X, mas ainda não no Windows.

Você pode tentar AngryHosts , que forneceu uma maneira de curinga suporte e expressão regular. Na verdade, é um acessório arquivo hosts e software de gestão.
Mais recursos pode ser visto @ http://angryhosts.com/features/

Eu estou usando DNSChef para fazer isso.

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

Você tem que baixar o aplicativo, no Linux ou Mac você precisa python para executá-lo. Windows têm seu próprio exe.

Você deve criar um arquivo ini com entradas de seu DNS, por exemplo

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

Em seguida, você deve iniciar a aplicação dns com privilégios de administrador

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

ou no Windows

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

Finalmente, você precisa configurar como sua única DNS seu ambiente de host local (rede, interface, dns ou semelhante ou no linux /etc/resolv.conf).

É isso

Eu fiz esta ferramenta simples para tomar o lugar dos exércitos. As expressões regulares são suportados. https://github.com/stackia/DNSAgent

A configuração de exemplo:

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

Eu não poderia encontrar uma proibição por escrito, mas por convenção, o arquivo segue de perto o arquivo hosts UNIX, os hosts do Windows e você não pode colocar referências curinga nome do host em que o arquivo.

Se você ler a página do homem, ele diz:

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

Apesar de não digamos,

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

que não é verdade de um nível prático.

Basicamente, o código que olha para o arquivo / etc / hosts não suporta uma entrada de curinga.

A solução é criar todas as entradas com antecedência, talvez usar um script para colocar um par de centenas de entradas de uma vez.

@petah e acrílico DNS Proxy é a melhor resposta, e no final ele faz referência a capacidade de fazer multi-site usando um Apache que @jeremyasnyder descreve um pouco mais abaixo ...

... no entanto, no nosso caso, estamos testando um multi-tenant sistema de hospedagem e assim por mais Domínios que queremos testar ir para o mesmo virtualhost, enquanto alguns outros são direcionados para outro lugar.

Assim, no nosso caso, você simplesmente usar wildcards regex na directiva ServerAlias, como assim ...

ServerAlias *.foo.local

Aqui está a configuração total para aqueles que tentam cumprir a meta (wildcards no ambiente dev ou seja, XAMPP - este exemplo assume todos os sites apontando para mesma base de código)

arquivo

anfitriões (adicionar uma entrada)

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

127.0.0.1   example.local

httpd.conf de configuração (activar vhosts)

arquivo: \ XAMPP \ etc \ httpd.conf

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

httpd-vhosts.conf de configuração

arquivo: XAMPP \ etc \ extras \ 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>

restart apache

criar arquivo PAC:

Salvar como whatever.pac onde quer que você quer e, em seguida, carregar o arquivo em rede> Proxy> Configurações auto_configuration do navegador (recarga se você alterar este)

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

Você pode usar echoipdns para isso ( https://github.com/zapty/echoipdns ).

Ao executar echoipdns local todos os pedidos de subdomínios .local são redirecionados para 127.0.0.1, portanto, qualquer domínio com xyz.local etc irá resolver a 127.0.0.1. Você pode usar qualquer outro sufixo também apenas substituir local com nome que você quiser.

Echoipdns é ainda mais poderoso, quando você quiser usar o seu url de outras máquinas na rede, você ainda pode usá-lo com configuração zero.

Por exemplo Se o seu endereço de máquina ip 192.168.1.100 é agora você pode usar um nome de domínio xyz.192-168-1-100.local que sempre resolver a 192.168.1.100. Esta magia é feito pelos echoipdns, olhando para o endereço IP na segunda parte do nome de domínio e devolver o mesmo endereço IP na consulta DNS. Você terá que executar os echoipdns na máquina a partir da qual você deseja acessar o sistema remoto.

echoipdns também pode ser configurado como um proxy autônomo DNS, por isso, basta apontar a este DNS, agora você pode usar todos os benefícios acima sem executar um comando especial de cada vez, e você ainda pode usá-lo a partir de dispositivos móveis.

Então, basicamente isso simplifica o desenvolvimento de DNS curinga de domínio com base em local, bem como ambiente de equipe.

echoipdns funciona em Mac, Linux e Windows.

NOTA: Eu sou autor para echoipdns

.

Configuração para nginx configuração auto subdomínio com acrílico DNS Proxy

arquivo auto.conf para seus sites nginx pasta

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

Adicionar à Acrílico arquivo hosts 127.0.0.1 example.com *.example.com e reinicie o serviço de acrílico. $ ramo -. Seu nome subdomínio

Set vez de raiz / var / www / html / $ filial / público; o caminho do projeto

Você pode usar um cliente DNS dinâmico, como http://www.no-ip.com . Então, com um servidor DNS externo CNAME * .meudominio.com para mydomain.no-ip.com.

Enquanto você não pode adicionar um curinga como esse, você pode adicionar a lista completa dos sites que você precisa, pelo menos para o teste, que funciona bem o suficiente para mim, em seu arquivo hosts, basta adicionar:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top