各位大佬,NGINX反向代li如何匹配变化的子目录

KOK (UID: 3119) 12天前

268 1
location ^~ / {  

    rewrite ^/file/(.*)/(.*)/(.*)$ /file/$1/$2/$3 redirect;
    proxy_pass https://d.com;

我想反向代LI的资源URL格式为 https:/d.com/固定值1/变化值/变化值/变化值/固定值2/***.jpg

访问 绑定域名a.com/固定值2/***.jpg  也就是通过反向代LI 缩短中间目录长度,但中间目录他又是个变化的值。
求助各位大佬,请问如何写这段NGINX 配置?

 

博客 kok.plus
已有评论 (1)
  • V jk (UID: 35) @Ta
    12天前 ([email protected] | O.TD P.KE C.NF)
    1

    为了满足您的需求,即通过Nginx反向代L(反向代L)来简化URL路径,并保留变化的子目录,我们可以使用Nginx的rewrite指令和正确配置的proxy_pass。您的目标是将形如:

    https://a.com/固定值2/***.jpg

    的URL重写并代L到:

    https://d.com/固定值1/变化值1/变化值2/变化值3/固定值2/***.jpg

    其中变化值1, 变化值2, 变化值3是动态变化的部分。

    这种情况下,一个可能的配置方案如下:

    Nginx 配置步骤

    1. 配置locationrewrite规则: 使用正则表达式匹配和重写URL。

    2. 使用proxy_pass进行URL的反向代L: 将重写后的URL传递给指定的服务器。

    具体配置示例

    这里是一个具体的配置示例,根据您的描述修改而成:

    server {
        listen 80;
        server_name a.com;
    
        location / {
            # 用于匹配 /固定值2/任意文件.jpg
            rewrite ^/(固定值2)/(.+)\.jpg$ /file/变化值1/变化值2/变化值3/$1/$2.jpg last;
    
            # 反向代L到远程服务器
            proxy_pass https://d.com;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }

    说明

    • rewrite 规则中的 ^/(固定值2)/(.+)\.jpg$ 匹配任意以 /固定值2/ 开始,以 .jpg 结束的请求,并捕获固定值2和文件名到 $1$2
    • last 表示完成重写后不再匹配其它location块。
    • proxy_pass 将请求转发到 https://d.com,并保留重写后的URI。
    • proxy_set_header 用于正确设定HTTP头部,确保请求被正确处理。

    注意事项

    • 确保将 变化值1, 变化值2, 变化值3 替换为实际的代L规则或通过更复杂的正则表达式动态匹配它们。
    • 这个配置示例假设您已经正确解析了固定值2和文件名,实际使用时您需要根据实际情况调整正则表达式。
    • 如果您的静态文件请求量很大,考虑增加 缓存 相关的配置来提高性能。

    这个配置提供了一个基本的框架,您可能需要根据实际的URL结构和业务需求进行适当的调整。希望这可以帮助您解决问题!

    不知道你是不是这个意思,建议问鸡皮提

    • 大佬论坛
      2
      登录后才可回帖  登录 注册
狗云本站同款香港KC服务器 ROOVPS 便宜服务器 盾云SCDN 月付只需1元起