问个关于 nginx 的 server_name 的问题。

2018 年 8 月 25 日
 LeungJZ

现在想匹配一堆 co-{hash}.test.com。请问如何写 server_name 的正则?

需要将匹配到的 hash 重定向到 demo.test.com/hash/(这里在 location 重写一下就可以了吧?);或者将 root 目录指向 /home/enterprise/$hash。

现在的问题就是,匹配不到 co-{hash}.test.com 这个域名中的 hash 值。

附上 server 的 conf:

server {
    listen       80;
    server_name   ~^co-(?<hash>.+)?\.test\.com$;
    #root /home/enterprise/;
    root  /home/enterprise/$hash;

    access_log  logs/enterprise.access.log;

    location ~ \.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {
        expires 30d;
   }


    error_page  404              /404.html;

    location ~ \.php$ {
        deny  all;
    }
    
    location ~ /\.ht {
        deny  all;
    }
}

百度 / Google 出来的全都是官网的 server_name 的配置,一字不差的翻译过来。

3641 次点击
所在节点    NGINX
4 条回复
xaxb
2018 年 8 月 26 日
~^后面要有空格
LeungJZ
2018 年 8 月 26 日
@sunweiqiang8 要有空格?官方的貌似也没有。
msg7086
2018 年 8 月 26 日
先来缩小一下范围:

你说的匹配不到,是说没法跑进这个 server block 内部,还是说$hash 为空?

如果$hash 为空,有没有试过在 location block 内部读取$hash 的值?
LeungJZ
2018 年 8 月 26 日
@msg7086 跑不到内部。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/483230

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX