我有点困惑。 我有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,而第二个实际上是为应用程序提供服务。