在 HAproxy 后面将 nginx 上的 www 域名重定向到非 www 域名

在 HAproxy 后面将 nginx 上的 www 域名重定向到非 www 域名

我有点困惑。我的 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;
}

答案1

搞清楚了。由于 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 子域并提供重定向,而第二个声明实际上为应用程序提供服务。

相关内容