Подтвердить что ты не робот

Worker_connections недостаточно

Я пытаюсь использовать приложение kibana, развернутое в nginx, но ниже

URL: - http://127.0.0.1/kibana-3.1.2

2015/02/01 23:05:05 [alert] 3919#0: *766 768 worker_connections are not enough while connecting to upstream, client: 127.0.0.1, server: , request: "GET /kibana-3.1.2 HTTP/1.0", upstream: "http://127.0.0.1:80/kibana-3.1.2", host: "127.0.0.1"

Кибана развертывается в /var/www/kibana-3.1.2

Я попытался увеличить worker_connections, но все равно не повезло, получив ниже в этом случае.

2015/02/01 23:02:27 [alert] 3802#0: accept4() failed (24: Too many open files)
2015/02/01 23:02:27 [alert] 3802#0: accept4() failed (24: Too many open files)
2015/02/01 23:02:27 [alert] 3802#0: accept4() failed (24: Too many open files)
2015/02/01 23:02:27 [alert] 3802#0: accept4() failed (24: Too many open files)
2015/02/01 23:02:27 [alert] 3802#0: accept4() failed (24: Too many open files)

nginx.conf: -

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

И ниже в директиве location.

location /kibana-3.1.2{

        proxy_set_header X-Real-IP  $remote_addr;

        proxy_set_header X-Forwarded-For $remote_addr;

        proxy_set_header Host $host;

        proxy_pass http://127.0.0.1;

        add_header Access-Control-Allow-Origin *;

        add_header Access-Control-Allow-Headers *;
       }
4b9b3361

Ответ 1

Не достаточно информации, чтобы сказать окончательно, но на основе предоставленной вами конфигурации похоже, что у вас есть цикл. Вы проксируете запросы на localhost: 80, но NGINX, скорее всего, слушает порт 80. Таким образом, NGINX снова и снова подключается к себе, следовательно, ошибки в слишком большом количестве открытых файлов.

Кроме того, у Kibana нет кода на стороне сервера, поэтому proxy_pass здесь не подходит. Что-то вроде следующего должно быть достаточно:

root /var/www/
location /kibana-3.1.2 {
    try_files $uri $uri/ =404;
}

С учетом сказанного, если вы намерены сделать это доступным из общедоступного интернета, вы должны защитить его паролем, и вы должны использовать proxy_pass перед elasticsearch, чтобы контролировать, какие запросы могут быть сделаны к нему. Но это другая история:)

Ответ 2

Старый вопрос, но у меня была такая же проблема, и принятый ответ не помог мне.

Мне пришлось увеличить число worker_connections, как указано здесь.

/etc/nginx/nginx.conf

events {
    worker_connections 20000;
}