docker - 在 Docker 内运行的 Nginx 状态端点

标签 docker nginx endpoint

我是 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/

相关文章:

wcf - 如何捕获 WCF 服务端点

node.js - Mac OS X、Vagrant、Docker、Nginx、Node - 端口如何一起发挥作用?

docker - 使用 Docker 提供软件更新

docker - 在 192.168.65.5 上查找 :53: no such host

Python webapp——从测试到生产

c - 实现ctpp/nginx进行部署

SSL 证书适用于子域,但不适用于使用 cloudflare 和 certbot 的主域

endpoint - 在 Virtuoso 中定义端点

php - 为什么将 docker-compose exec 的输出管道输出到 grep,会破坏它?

java - 如何在 Restful Web 服务中发送 XML 文件端点 url