2016-09-18 61 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