技术解析

问个关于 nginx 的 server_name 的问题。
0
2021-05-19 19:50:39
idczone

现在想匹配一堆 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-(?.+)?\.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;

    lo国外服务器cation ~ \.php$ {
        deny  all;
    }
    
    location ~ /\.ht {
        deny  all;
    }
}

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


~^后面要有空格

要有空格?官方的貌似也没有。

先来缩小一下范围:
你说的匹配不到,是说没法跑进这个 server block 内部,还是说$hash 为空?
如果$hash 为空,有没有试过在 location block 内部读取$hash 的值?

跑不到内部。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服