Nginx 包罗万象的路由,除了根路由

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

所以,我有一个 URL Shortener 网站,我只想通过静态文件提供根路径,并通过 API 将其他路由重定向到目的地。

我用

location = /
找到了解决方案,但没有多大帮助。

server {
    listen 443 ssl;
    server_name domain.com;

    ...

    # Home page
    location = / {
        root /usr/share/nginx/html;
        index  index.html;
    }

    # Redirects
    location / {
        proxy_pass http://api:3000/v1/urls/redirect$uri;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
nginx nginx-reverse-proxy nginx-location
1个回答
0
投票

指令

index
会导致内部重定向,并且请求可以在不同的位置处理,
/
请求实际上将在第二个位置处理为
/index.html

您可以配置为:

server {
    
  ...
  
  location = / {
    index /c0g2af/index.html;
  }

  location / {
        proxy_pass   http://api:3000/v1/urls/redirect$uri;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /c0g2af/ {
        root /usr/share/nginx/html;
    }
    
}

/usr/share/nginx/html
中创建一个目录,并命名为随机代码,例如
c0g2af

© www.soinside.com 2019 - 2024. All rights reserved.