0

我的主机 ( 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/[..].

4

2 回答 2

1
location / {
    return 403;
}

location ~ ^/\w{8}-(?:\w{4}-){3}\w{12}/ {
    ...
}
于 2012-06-05T12:14:33.227 回答
0

在你的服务器或位置指令中添加这个:

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

所以,正如医生所说,

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

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


编辑: 503 到 403 中的if.

于 2012-06-04T08:26:56.543 回答