您好,登錄后才能下訂單哦!
小編這次要給大家分享的是nginx如何用正則表達式實現泛域名自動匹配目錄,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
nginx用正則表達式實現泛域名自動匹配目錄
用nginx可以實現虛擬主機的功能,可以綁定多個網址。
通常主域名都是寫死在配置里面的,所以要增加匹配時,需要手動添加。
基本寫法
最基本的寫法是server{ listen 80; server_name www.a.com; root /html/a; … } server{ listen 80; server_name www.b.com; root /html/b; … }
正則式寫法
域名綁定后,自動匹配到相應的目錄中,不需要一個一個域名去寫配置。
匹配目錄為:html/域名/二級域名,例如www.baidu.com會匹配到baidu.com/www目錄下
server { listen 80; # $subdomain 將匹配到二級域名級以上 # $domain 將匹配到一級域名 # $tld 將匹配到根節點名 server_name ~^((?<subdomain>.*)\.)?(?<domain>[^.]+)\.(?<tld>[a-zA-Z]+)$; #如果沒有$subdomain,則跳轉到www if ($subdomain = "") { # set $subdomain "_"; set $subdomain "www"; return 301 $scheme://www.$domain.$tld$request_uri; } root /usr/share/nginx/html/${domain}.${tld}/${subdomain}; }
其他
nginx 的匹配順序,搜索一下有很多文章,我就不詳細說了。
因為正則表達式的匹配優先級最低,只有當其他都匹配不到時才會進行正則表達式的匹配,所以不用擔心影響其他的精確匹配。
一般人不會有那么多的域名要匹配,相反,是要屏蔽掉一些惡意的域名指向。
但是測試的時候,為了不影響正在運行的網頁,可以在hosts中添中一條ip 域名記錄,用不存在的域名來測試,這時候就比較有用了。
看完這篇關于nginx如何用正則表達式實現泛域名自動匹配目錄的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。