m19*_*19v 11 nginx docker health-check
我有一个与 nginx 服务器一起运行的 docker 容器。
我想提供一个休息接口/端点来检查服务器和容器的运行状况。例如 GET http://container.com/health/提供“true”/OK 或“false”/NOK。
最简单快捷的解决方案或最佳实践是什么?
PS 服务器充当文件浏览器,即启用目录索引列表。
dza*_*rov 33
以下配置对我的 nginx 版本有用nginx/1.14.0 (Ubuntu)
::
location = /health {
access_log off;
add_header 'Content-Type' 'application/json';
return 200 '{"status":"UP"}';
}
Run Code Online (Sandbox Code Playgroud)
要测试它:
location
配置(如上所述)添加到server
文件中块的末尾/etc/nginx/sites-available/default
并重新启动 nginx 服务器http://localhost/health
应该返回响应{"status":"UP"}
添加
server {
// ....
location /health {
access_log off;
add_header 'Content-Type' 'text/plain';
return 200 "healthy\n";
}
}
Run Code Online (Sandbox Code Playgroud)
或者如果您需要 JSON 支持
server {
// ....
location /health {
access_log off;
add_header 'Content-Type' 'application/json';
return 200 '{"status":"Healthy"}';
}
}
Run Code Online (Sandbox Code Playgroud)
注意:任何 200 或以上且低于 400 的状态均被视为活动/成功。所以身体本身是什么并不重要。重要的是返回的 status_code 是什么。
另外,如果您需要代理到远程后端服务。
server {
// ....
location / {
proxy_pass http://backend;
health_check interval=10 fails=3 passes=2;
}
}
Run Code Online (Sandbox Code Playgroud)
这样您就可以让后端服务自行处理实际的状态。因为仅仅因为容器准备好了并且 nginx 准备好了,并不总是意味着后端服务已经连接到其依赖的服务,例如数据库等。
归档时间: |
|
查看次数: |
31388 次 |
最近记录: |