如何仅将主机限制为特定URI?

时间:2012-06-04 07:13:11

标签: nginx

我的主人(dev.foo.com)有一张如下地图。大约1000个条目。

rewrite ^/2f7f29e4-14be-564a-85e0-5bb29b9fc33f/(.*)$ "/gajus kuizinas/2012 04 03 gappery/$1" last;
rewrite ^/cb6e7269-75c0-5926-b5d5-4e625e1a320d/(.*)$ "/gajus kuizinas/2012 04 07 gappery/$1" last;
rewrite ^/8b96e14f-09cd-55a5-9de3-19775b5ee2bb/(.*)$ "/gajus kuizinas/2012 05 17 followem/$1" last;

有没有办法将主机仅限制为以其中一个给定UUID开头的URI?换句话说,使任何其他路径无法访问,例如dev.foo.com/public/[..]

2 个答案:

答案 0 :(得分:1)

location / {
    return 403;
}

location ~ ^/\w{8}-(?:\w{4}-){3}\w{12}/ {
    ...
}

答案 1 :(得分:0)

在服务器或位置指令中添加:

    if ($request_uri !~ "^/\w{8}-(?:\w{4}-){3}\w{12}/.*") {
        return 503;
    }

所以,正如医生说的那样,

$ REQUEST_URI 此变量等于从客户端(包括args)收到的原始请求URI。它无法修改。查看$ uri以获取重写/更改后的URI。不包括主机名。示例:“/ foo / bar.php?arg = baz”

如果$ request_uri与您的uuid正则表达式不匹配,则nginx返回403错误(拒绝访问)。