NGINX-将某些路由重定向到子域

NGINX-将某些路由重定向到子域,nginx,url-rewriting,subdomain,Nginx,Url Rewriting,Subdomain,我创建了一个项目,其中我有: my project.com显示我的Angular 8应用程序 api.my project.com访问我的Symfony 5 api 我在Angular应用程序上建立了一个非常基本的登录页,但现在,我改变了主意,我想让Angular应用程序进入app.my project.com,并保留my project.com以显示一个漂亮的登录页 问题是有些客户端已经在主域上使用该服务,该请求应该重定向到app.my project.com子域 应该是这样的: my pro

我创建了一个项目,其中我有:

  • my project.com
    显示我的Angular 8应用程序
  • api.my project.com
    访问我的Symfony 5 api
  • 我在Angular应用程序上建立了一个非常基本的登录页,但现在,我改变了主意,我想让Angular应用程序进入
    app.my project.com
    ,并保留
    my project.com
    以显示一个漂亮的登录页

    问题是有些客户端已经在主域上使用该服务,该请求应该重定向到
    app.my project.com
    子域

    应该是这样的:

    my project.com/login
    ->
    app.my project.com/login

    my project.com/pm something
    ->
    app.my project.com/pm something

    以下是我需要的伪代码:

    if( url.includes('login') or url.includes('pm-') ) {
        redirectTo(app.my-project.com)
    }
    
    我认为实现这一点最简单的方法是在我的NGINX配置文件中重写路由,但我不确定正确的方法


    提前感谢。

    NGINX根据服务器配置中定义的
    位置
    块选择请求URI处理规则。关于本指令的官方文件是,并且是一些附加说明。您可以使用两个前缀位置实现所需的行为:

    位置/登录{
    返回301$scheme://app.my-project.com$request_uri;
    }
    地点/下午-{
    返回301$scheme://app.my-project.com$request_uri;
    }
    
    这两个前缀位置可以替换为单个正则表达式匹配位置:

    location~ ^/(登录| pm-){
    返回301$scheme://app.my-project.com$request_uri;
    }
    

    NGINX使用系统PCRE库和通用PCRE正则表达式语法,但不应为正则表达式模式使用分隔符字符(与使用
    ~
    (区分大小写的匹配)、
    ~*
    (不区分大小写的匹配)或
    !~
    /
    !~*
    指定的正则表达式匹配)(区分大小写/不区分大小写的不匹配)操作员)。此外,您不需要在
    /
    字符前面加反斜杠(尽管您仍然可以这样做,但它不会改变正则表达式模式的含义)。

    如果您解释您提供的代码是如何回答这个问题的,这将是一个更好的答案。您好,Ivan,它工作了!你能解释一下它是如何工作的吗?正如@pppery所说的,这将是伟大的。谢谢@IsaacBosca补充了一些解释。谢谢@伊凡沙茨基