nginx reescreve o subdomínio

8

No entanto, outra questão de regra de reescrita do nginx

Como posso reescrever de http://www.*.domain.com a http://*.domain.com ?

obrigado antecipadamente

- Deb

EDITAR:

Desculpe, não vi a formatação têxtil remover o * da minha pergunta. Eu consertei agora. O que eu preciso fazer é ir de www.joe.domain.com para joe.domain.com, onde joe poderia ser qualquer palavra.

    
por deb 07.05.2010 / 15:29

4 respostas

7

Qual é o significado do período extra antes de domain.com? O objetivo é remover o www do URL? Se assim for, isso deve funcionar:

if ($host ~* www\.(.*)) {
  set $host_without_www $1;
  rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1 contains '/foo', not 'www.mydomain.com/foo'
}

Não se esqueça de: sudo /etc/init.d/nginx restart carregá-lo

Fonte: Wiki do NGINX

    
por 07.05.2010 / 19:29
12

Isso é meio que um hack.

A maneira mais rápida de desempenho seria

server {
  server_name www.domain.com;
  rewrite ^ http://domain.com$request_uri permanent;
}

Você salva uma correspondência de regex, bem como duas capturas, além de obter a vantagem do nginx usando tabelas de hash para procurar o bloco de servidor correspondente.

Além disso, você não precisa reiniciar o nginx - um recarregamento é tudo o que é necessário, e quem gostaria de ter mais tempo de inatividade do que o necessário?

    
por 07.05.2010 / 22:05
5

Você pode usar nomes de servidores de expressões regulares (consulte link ):

server {
  listen 80;
  listen 443;
  server_name ~^www\.(\w+)\.domain\.com$
  location / {
    rewrite ^ $scheme://$1.domain.com$request_uri permanent;
  }
}
    
por 23.02.2012 / 14:05
1

A solução de Martin F está bem, até que você tenha centenas de domínios. Eu, no entanto, sugiro ir para o outro lado - servir o aplicativo em www.joe.domain.com e redirecionar de joe.domain.com. Tenho certeza que está em um RFC.

    
por 08.05.2010 / 21:04

Tags