Registros curinga com Nginx para manipular domínios personalizados

4

Aqui está o meu problema de 5 horas:

Eu configurei uma instância multisite do WordPress que lida com sites em domain.com, subdomain.domain.com e customdomain.com. Haverá N número de sites usando o customdomain.com, então prefiro não criar registros para cada um deles. No servidor, tenho o Nginx na frente do Apache.

O que eu gostaria de fazer é configurar um registro curinga no Nginx para manipular todos os domínios personalizados. No momento, parece algo assim:

server {
    listen 80;
    server_name _;
    root /home/server_user/web/production;
    client_max_body_size 50M;
    client_body_buffer_size 128k;

    location / {
        access_log      off;
        proxy_pass http://localhost:8080;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $proxy_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}

Com essa configuração, ela passará solicitações para o Apache e veiculará o conteúdo dinâmico, mas retornará 404s para todo o conteúdo estático. Se eu alterar 'server_name' para 'customdomain.com', o Nginx começará a exibir conteúdo estático novamente. Quando eu mudo 'server_name' para '_' ou qualquer outro padrão pega-tudo, o Nginx cai de cara.

Alguma idéia?

    
por Daniel Bachhuber 13.08.2010 / 22:58

2 respostas

5

A solução (pelo menos com minha configuração):

Em seu registro curinga, a diretiva 'listen' também deve incluir 'default':

listen 80 default;

Não adicione uma diretiva 'nome_do_servidor' porque isso fará com que as coisas quebrem de formas inesperadas.

Adere Max Cutler por me ajudar a descobrir isso.

    
por 30.08.2010 / 18:14
0

Com relação à documentação oficial , você tem as seguintes possibilidades:

server {
  server_name   example.com  *.example.com  www.example.*;
}

server {
  server_name _ *;
}

server {
  server_name example.com *;
}

Observe que isso mudou na 0.6.xe agora:

server {
  server_name _;
}

Desde o nginx 0.7.12, um nome de servidor vazio é suportado para capturar as solicitações sem o cabeçalho "Host":

server {
  server_name "";
}
    
por 13.08.2010 / 23:24