问个关于 nginx 的 server_name 的问题。

2018-08-25 21:26:05 +08:00
 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 的配置,一字不差的翻译过来。

2832 次点击
所在节点    NGINX
4 条回复
alex8
2018-08-26 09:27:31 +08:00
~^后面要有空格
LeungJZ
2018-08-26 11:25:48 +08:00
@sunweiqiang8 要有空格?官方的貌似也没有。
msg7086
2018-08-26 18:26:53 +08:00
先来缩小一下范围:

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

如果$hash 为空,有没有试过在 location block 内部读取$hash 的值?
LeungJZ
2018-08-26 18:54:21 +08:00
@msg7086 跑不到内部。

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

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

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

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

© 2021 V2EX