我正在使用 ALB 作为我的 Kubernetes 部署的入口。我有一条规则,将路径
/v2 or /v2/*
上的流量转发到托管静态反应应用程序的 Nginx 容器。不幸的是,无论我如何配置静态资产都没有解析,只有根目录(index.html)正在解析。例如。 /v2/assets/index-6146e9e0.js 不工作。
如果我更改规则以便在路径为
/ or /*
时将流量转发到容器,那么它会正确解析。我做错了什么?
这是我的 nginx.conf:
server {
listen 80;
root /usr/share/nginx/html;
index index.html index.htm;
location /v2/assets/ {
alias /usr/share/nginx/html/assets/;
expires 1d;
access_log off;
}
# Serve index.html file
location /v2 {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
}
# Rewrite absolute URLs to resolve using /v2
location ~* \.(html|js|ico)$ {
root /usr/share/nginx/html;
sub_filter 'src="/assets/' 'src="/v2/assets/';
sub_filter_once off;
add_header Cache-Control no-cache;
}
}
静态文件放在正确的文件夹中似乎很重要。当它们应该放在
/usr/share/nginx/html
时,我把它们放在了/usr/share/nginx/html/v2/
。此外,我必须更改资产文件夹以使用正确的子路径。
这是对我有用的配置:
server {
listen 80;
root /usr/share/nginx/html;
index index.html;
location /v2/ {
alias /usr/share/nginx/html/v2/;
try_files $uri $uri/ /v2/index.html;
sub_filter 'src="/assets/' 'src="/v2/assets/';
sub_filter_once off;
add_header Cache-Control no-cache;
}
}