在我的部署期间,我创建工件,它们是带有静态文件的文件夹- html、css、js。它们被复制到/usr/share/nginx/html/${SHORT_COMMIT_HASH}文件夹中的服务器上。
例如,该网站可参考。
site.com/${SHORT_COMMIT_HASH} 请求如下所示:
site.com/9f9b348b/some_url_1/1
site.com/9f9b348b/some_url_2/2在输入任何启动site.com/${SHORT_COMMIT_HASH}的链接时,需要显示/usr/share/nginx/html/${SHORT_COMMIT_HASH}目录中的index.html }。
我为它提供了nginx配置:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
}
location ~ ^/([a-zA-Z0-9]*)/ {
root /usr/share/nginx/html;
try_files $uri $uri/ /$1/index.html;
}
}但我有麻烦了。css,js文件nginx不是在site.com/${SHORT_COMMIT_HASH}中,而是在site.com/
如何更改位置/位置的根,对于每个请求,我们都是自己的根,相对${SHORT_COMMIT_HASH};
如何使用变量来完成以下操作:
location / {
root /usr/share/nginx/html/${SHORT_COMMIT_HASH};
} 发布于 2019-04-09 13:04:30
我用sub_filter找到了解决方案:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /$1/index.html;
location ~ "^/([a-z0-9]{8})/" {
try_files $uri /$1/index.html = 404;
sub_filter_once off;
# sub_filter_types text/html; # mime-type based rewriter
sub_filter '/static' '/$1/static';
}
}
location ~ ^/([a-zA-Z0-9]*)/ {
root /usr/share/nginx/html;
try_files $uri $uri/ /$1/index.html;
}
}https://serverfault.com/questions/962156
复制相似问题