在 AWS ALB 子路径上将流量转发到 Nginx 的问题

问题描述 投票:0回答:1

我正在使用 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;
  }
}
amazon-web-services nginx-config aws-application-load-balancer
1个回答
0
投票

静态文件放在正确的文件夹中似乎很重要。当它们应该放在

/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;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.