如何在 location 中使用 Nginx Regex

如何在 location 中使用 Nginx Regex

对于 Nginx Location,如何获取下面粗体内容?

https://代理主机/存储桶名称/测试/uid

location  ~* /regex/ {
    proxy_pass https://$1.s3.amazonaws.com/;
}

我需要使用这个正则表达式来提取存储桶名称并填充 Nginx S3 代理中的真实 URL。

谢谢!

答案1

考虑到Bucket 命名规则,下面是一个涵盖这些规则的良好开端:

  • 存储桶名称只能由小写字母、数字、点 (.) 和连字符 (-) 组成。

  • 存储桶名称必须以字母或数字开头和结尾。

location ~ ^/([a-z0-9][a-z0-9\-\.]+[a-z0-9])/ {
    proxy_pass https://$1.s3.amazonaws.com/;
}

或者

location ~ ^/(?<bucket>([a-z0-9][a-z0-9\-\.]+[a-z0-9]))/ {
    proxy_pass https://$bucket.s3.amazonaws.com/;
}

相关内容