我正在尝试为我的nginx配置中的特定路由提供健康状态页面。
我有一个docker文件,它将html
复制到正确的位置,并确认它在那里。
但是当我导航到路由/en/health
时,当网站启动并运行时,我没有在屏幕上看到基本的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
块似乎也在使用相同的文档根目录。
与其依赖alias
和index
来查找正确的文件,不如使用try_files
来显式定义要返回的文件。
例如:
location /en/health {
try_files /en/health/index.html =404;
}