在 Nginx Conf 中查找 URI 中的域名

在 Nginx Conf 中查找 URI 中的域名

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 设置为固定变量,它就会起作用。

谢谢

相关内容