les relations de travail ne suffisent pas

je suis en train d'essayer d'accès kibana application déployée dans nginx,mais en dessous de

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"

Kibana est déployé à /var/www/kibana-3.1.2

j'ai essayé d'augmenter le worker_connections, mais toujours pas de chance, descendre dans ce cas.

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;
}

et plus bas dans la directive 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 *;
       }
18
demandé sur RE350 2015-02-01 20:43:28

2 réponses

pas assez d'info pour dire définitivement, mais d'après la configuration que vous avez fournie, il semble que vous ayez une boucle. Vous exécutez les requêtes pour localhost: 80, mais NGINX est probablement en train d'écouter sur le port 80. Donc, NGINX se connecte à lui-même encore et encore, d'où les erreurs sur trop de fichiers ouverts.

de plus, Kibana n'a pas de code côté serveur, donc proxy_pass n'est pas approprié ici. Quelque chose comme ceci devrait suffire:

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

avec cela ceci étant dit, si vous avez l'intention que ceci soit accessible à partir de l'internet public, vous devriez le protéger avec un mot de passe et vous devriez utiliser proxy_pass devant elasticsearch pour contrôler quelles requêtes peuvent lui être faites. Mais c'est une autre histoire :)

21
répondu chrskly 2015-02-02 00:00:48

ancienne question, mais j'ai eu le même problème et la réponse acceptée n'a pas fonctionné pour moi.

j'ai dû augmenter le nombre de connections worker_connections, comme indiqué ici.

/ etc/nginx / nginx.conf

events {
    worker_connections 20000;
}
30
répondu RASG 2016-04-08 13:01:36