Я немного запутался. У меня 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 и обслуживать перенаправление, а второе фактически обслуживает приложение.