Конечная точка состояния Nginx работает внутри Docker - PullRequest
0 голосов
/ 11 мая 2018

Я новичок в Nginx, который я запускаю в контейнере Docker для обслуживания простого веб-сайта.Я хочу добавить конечную точку /health, которая просто возвращает статус 200 + некоторый произвольный контент.

Я скопировал и скорректировал стандарт nginx.conf из /etc/nginx/, добавив

server {
    location /health {
        return 200 "alive";
    }
}

вдно внутри блока http.Но когда я запускаю Docker и пытаюсь получить доступ к localhost/health, я просто получаю no such file or directory.Доступ к веб-сайту на 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.

AmЯ размещаю location в неправильном месте внутри nginx.conf?Нужна ли специальная конфигурация сервера?В чем проблема?

1 Ответ

0 голосов
/ 15 мая 2018

Проблема была в моей настройке / настройке 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;
    }
}
...