我有点困惑。我的 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 子域并提供重定向,而第二个声明实际上为应用程序提供服务。