Nginx 内部重写位置以提供静态内容

Nginx 内部重写位置以提供静态内容

我尝试从层次结构与实际根目录结构不同的端点提供静态内容。这是我试图实现的结果:

0.0.0.0/Claw/scripts/main.js -> /home/ubuntu/Claw/public/scripts/main.js

我正在使用以下 Nginx 配置:

location ~ ^/Claw/(images/|styles/|scripts/) {
    root /home/ubuntu/Claw/public;
    access_log off;
    expires max;
}

由于不存在,因此失败/home/ubuntu/Claw/public/Claw/scripts/main.js。因此我需要删除前缀从内部位置。我该如何做呢?

我想要这种结构,以便我可以在同一个域上的不同端点托管多个 Node 应用程序。

答案1

尝试这个:

location ~ ^/Claw/(?<subdir>images|styles|scripts)/(?<file>.*) {
    alias /home/ubuntu/Claw/public/$subdir/$file;
    access_log off;
    expires max;
}

似乎 nginx 不会将捕获的变量从location指令传递到块中的编号变量中。当变量被命名时,它们就会起作用。

答案2

您可以alias为此使用指令。

location ~ ^/Claw/(images|styles|scripts)/ {
    alias /home/ubuntu/Claw/public/$1/;
    access_log off;
    expires max;
}

相关内容