nginx - 如何在不以斜杠结尾的情况下路由特定的 uri 端点

nginx - how to route a specific uri endpoint without having it ending with a slash

我当前的设置:

  1. 用户输入www.example.com/example/xx/healthcheck
  2. kubernetes traefik 入口以后端作为 /example 并转到 nginx 服务
  3. 具有这种小配置的 nginx:
    server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;


    location /example/xx/healthcheck {
        root  /usr/share/nginx/html;
        index output.html;
    }

我把 output.html 放在 /usr/share/nginx/html/example/xx/healthcheck

里面

我的问题是,当我点击 www.example.com/example/xx/healthcheck 时,它没有加载页面。它只有在末尾有斜线时才有效 www.example.com/example/xx/healthcheck/

有没有合适的更好的方法来做到这一点?我想要 www.example.com/example/xx/healthcheck 并且它到达了页面。

谢谢

您可以使用

location = /example/xx/healthcheck {
    default_type text/html;
    alias /any/path/to/output.html;
}

注意 - slash-ended 请求 www.example.com/example/xx/healthcheck/ 将不再适用于此配置,尽管如果您将 location /example/xx/healthcheck { ... } 用作第二个请求或使用重写规则它会起作用喜欢

rewrite ^/example/xx/healthcheck/$ /example/xx/healthcheck;