url 的问题是 domain.com/proxy/seconddomain.tld/images/file.jpg ,我们想要找到 seconddomain.tld 是什么,到目前为止,我们正在尝试 nginx map 模块
map $request_uri $topdir {
~(?<captured_topdir>^/proxy/[a-zA-Z0-9\.-_]+)[/] $captured_topdir;
}
但这返回的是空的,可以说可以获取 /proxy/seconddomain.tld 但需要它而不需要文件夹。
答案1
尝试这个:
if ($host ~* ^(.+)\.([a-z0-9-]+)$) {
set $domainpart $1;
set $tld $2;
}
答案2
@drookie
这不起作用,它导致了 502 错误
if ($host ~* ^(.+)\.([a-z0-9-]+)$) {
set $domainpart $1;
set $tld $2;
}
add_header X-domain "$domainpart";
add_header X-tld "$tld";
subs_filter_types *;
subs_filter 'action="/' action="/proxy/$domainpart.$tld/;
subs_filter 'href="/' href="/proxy/$domainpart.$tld/;
如果我取出 if 部分并将 domainpart 和 tld 设置为固定变量,它就会起作用。
谢谢