我是 Nginx 新手,我在 Docker 容器中运行它来为一个简单的网站提供服务。我想添加一个 /health
端点,它只返回状态 200 + 一些任意内容。
我通过添加
从/etc/nginx/
复制并调整了标准 nginx.conf
server {
location /health {
return 200 "alive";
}
}
位于 http
block 内的底部。但是当我运行 Docker 并尝试访问 localhost/health 时,我只是得到“没有这样的文件或目录”。访问 localhost
网站工作正常。
我还尝试复制其他代码块,例如:https://gist.github.com/dhrrgn/8650077
但后来我得到conflicting server name ""on 0.0.0.0:80,ignored nginx: [warn]conflicting server name ""on 0.0.0.0:80,ignored
。
我是否将 location
放置在 nginx.conf
内的错误位置?我需要一些特殊的服务器配置吗?有什么问题吗?
最佳答案
问题出在我的 Nginx Docker 设置/配置上:我使用的是 nginx:alpine
,它的配置文件位于 /etc/nginx/conf.d/
。其中,default.conf
定义了 Nginx 的默认配置。因此,我必须删除 default.conf
并将我的配置复制到那里。在Dockerfile
中:
COPY nginx.conf /etc/nginx/conf.d/nginx.conf
RUN rm /etc/nginx/conf.d/default.conf
当然,我还必须在 nginx.conf
中定义标准路由:
server {
location / {
root /usr/share/nginx/html;
}
location /health {
return 200 'alive';
add_header Content-Type text/plain;
}
}
关于docker - 在 Docker 内运行的 Nginx 状态端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50295614/