从HA后面的wwwredirect到nginx上的非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的redirect?

我尝试了以下,但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子域并提供redirect,而第二个实际上是为应用程序提供服务。