NGINX 将所有路径重定向到特定路径

NGINX Redirect all paths to a specific path

我有一个主域 (example.com) 和多个域 (example.netexample1.infoexample2.info) 指向 NGINX 配置中的一个位置,如下所示:

server {
    server_name example.com *.com *.net *.info;
    root /home/example.com/public;
}

并且我想将特定路径 /login 重定向到 example.com/login,如何实现?如果我这样做

server {
    server_name example.com *.com *.net *.info;
    root /home/example.com/public;

    location = /login {
    return 301 https://example.com/login;
}

这适用于所有域,example.com/login 除外,因为它会不断重定向到自身。

创建从所有站点上的特定路径到我选择的路径的重定向的正确方法是什么?

从一个站点重定向到另一个站点的最简单逻辑是用它自己的服务器块隔离目标站点。可以使用 include 语句将通用配置导入到两个服务器块中。

我会使用默认服务器块而不是一长串通配符。

像这样:

server {
    listen 80 default_server;
    listen 443 ssl default_server;

    include /path/to/common/config;

    location = /login {
        return 301 https://example.com/login;
    }
}

server {
    listen 443 ssl;

    server_name example.com;

    include /path/to/common/config;
}

详情见this document