nginx 提供静态文件,但是当我转到它下载的路由时。html

nginx to serve static file but instead when i go to the route it downloads the .html

我正在尝试为我的 nginx 配置中的特定路由提供健康状态页面。

我有一个 docker 文件,可以将 html 复制到正确的位置并确认它在那里。

但是,当我导航到路线 /en/health 时,当网站启动时我没有在屏幕上看到基本的 html 页面 运行 但它会将文件下载到我的桌面。

我的 HML 文件:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Sample site</title>
  </head>
  <body>
    <div<h1>I am a healthy page</h1>></div>
  </body>
</html>

我的 nginx 配置:

server {
    listen 8080;
    server_name  localhost;

    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }
    error_page   500 502 503 504  /50x.html;

    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    
    location /en/health {
        alias /usr/share/nginx/html/en/health/;
        index health.html; 
    }

    location /nginx_status {
        stub_status;

        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}

如何通过 nginx 配置将 health.html 作为网页单独提供?

首先,您应该将 root /usr/share/nginx/html; 移动到 server 块上下文,因为您的大多数 location 块都使用相同的文档根目录。甚至 location /en/health 块似乎也在使用相同的文档根目录。

与其依靠 aliasindex 来找到正确的文件,不如使用 try_files 明确定义您想要 return.[=18= 的文件]

例如:

location /en/health {
    try_files /en/health/index.html =404;
}