Назад | Перейти на главную страницу

Перенаправление с www на домен без www на nginx из-за HAproxy

Я немного запутался. У меня nginx работает на порту, отличном от 80.

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

Это потому, что мой HAProxy работает на 80 на том же сервере.

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

Как заставить nginx выполнять перенаправление с www.example.com на example.com?

Я пробовал следующее, но nginx жалуется, что не может слушать на 80 (что имеет смысл, поскольку там слушает haproxy).

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

Догадаться. Поскольку nginx выполняет каскадирование определенных серверов, я могу добавить более конкретное объявление сервера над тем, что было у меня. В моем случае это следующее.

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

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

У меня может быть несколько объявлений, прослушивающих один и тот же порт, но первое будет перехватывать субдомен www и обслуживать перенаправление, а второе фактически обслуживает приложение.