我尝试从层次结构与实际根目录结构不同的端点提供静态内容。这是我试图实现的结果:
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;
}