小编这次要给大家分享的是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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。