Redirecionar do www para o non-www domain no nginx de trás do HAproxy

2

Estou um pouco confuso. Eu tenho o nginx rodando em uma porta diferente de 80.

# part of nginx.conf
server {
  listen  7000;
  include /etc/nginx/my_app.conf;
}

Isso porque meu HAProxy está sendo executado no 80 no mesmo servidor.

# Approximate haproxy.cfg
listen foo 0.0.0.0:80
  option forwardfor
    server web01 web01:7000 maxconn 25000 check

Como faço para o nginx enviar um redirecionamento de www.example.com para example.com?

Eu tentei o seguinte, mas o nginx reclama que ele não pode escutar no 80 (o que faz sentido, já que o haproxy está ouvindo lá).

server {
  server_name  www.example.com;
  rewrite ^ http://example.com$request_uri? permanent;
}
    
por Max Chernyak 19.03.2012 / 22:05

1 resposta

2

Descobri isso. Como o nginx desce em cascata pelos servidores definidos, posso adicionar uma declaração de servidor mais específica acima da que eu tinha. No meu caso é o seguinte.

server {
  listen 7000;
  server_name www.example.com;
  rewrite ^ http://example.com$request_uri? permanent;
}

server {
  listen 7000;
  include /etc/nginx/my_app.conf;
}

Eu posso ter várias declarações ouvindo na mesma porta, mas a primeira captura o subdomínio www e serve um redirecionamento, enquanto a segunda serve o aplicativo.

    
por 20.03.2012 / 01:28