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 apiapp.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补充了一些解释。谢谢@伊凡沙茨基