2016-09-18 94 views
3

我想根据用户输入的子域名进行重定向。如何在NGINX中获取URL的子域名

例如:

<subdomain>.example.com/admin -> <subdomain>.myurl.com

理想我想通过<subdomain>作为参数传递给我的重定向URL。

我一直在寻找沿此线的东西:在此基础上的帖子在这里

location ~ (sub).(somewhere).(com)/(some)(thing)/(something)(else) { 
    set $var1 = $1; # = sub in above example 
    set $var2 = $2; # = somewhere in above example 
    set $var3 = $3; # = com in above example 
    set $var4 = $4; # = some in above example 
    set $var5 = $5; # = thing in above example 
    set $var6 = $6; # = something in above example 
    set $var7 = $7; # = else in above example 
    rewrite^$1/$2 last; # would be sub/somewhere 
} 

Manipulate or split string(我觉得变量集合的语法错误在这个例子中,但你的要点)。

回答

4

URL的域名部分未经location指令测试。您需要在server_name指令中使用命名捕获。详情请参阅this document

例如:

server { 
    server_name ~^(?<name>\w+)\.example\.com$; 

    location /admin { 
     return 301 $scheme://$name.myurl.com/; 
    } 
} 
+0

通过它的声音,我想查询可能无法再。 理想情况下,我想把它放在已经有server_name设置的服务器块中,然后如果它是' .example.com/admin - > .myurl.com'或者如果它是' .example.com/admin - > .myurl.com' 我可以为每一个硬编码,但我们运行一些这样的网站,我们将我们的反应前端重定向到一个位于API网址的管理面板,所以很好有一个通用配置。 – Stretch0