nginx提供静态文件,但当我去路由下载.html



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

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

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

我的html文件:
<!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;
}
}

我如何服务health.html作为一个网页在自己的权利从nginx配置?

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

与其依赖aliasindex来查找正确的文件,不如使用try_files来显式定义要返回的文件。

例如:

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