nginx 将一堆子域名重写为域名

nginx 将一堆子域名重写为域名

我已经配置了我的第一个 nginx 服务器,我必须将 subdomain1.domain.com、subdomain2.domain.com 和其他一些重定向到 domain.com

我搜索了很多有关 nginx 重写的内容,但没有找到任何有用的内容。谢谢!

答案1

Nginx 仅知道与服务器块中的匹配的(子)域server_name。如果您设置了一个“默认”服务器块,则对任何其他(子)域的请求最终都会进入“默认”服务器块。

因此,您需要创建一个与您感兴趣的子域匹配的新服务器块。

server{
    server_name subdomain1.domain.com subdomain2.domain.com;
}

如果您有大量子域名,您还可以使用正则表达式匹配或通配符server_name(例如)。*.domain.com

在该服务器块中,添加您的重写(本质上等同于,任何命中这些子域的内容都应重写到我的主域)。

rewrite ^ http://domain.com permanent;

把所有这些放在一起,你会得到:

server{
    server_name subdomain1.domain.com subdomain2.domain.com;
    rewrite ^ http://domain.com permanent;
}

您可以更改http://domain.comhttp://domain.com$request_uri以保留路径。

相关内容