Implémentation de Nginx en tant que proxy inverse sur une instance EC2, pour une ferme Eclipse Che

En ce qui concerne la mise à l'échelle d' Eclipse Che (un IDE de nuage), je met en œuvre une ferme Che . Bref, un groupe d'instances Eclipse Che derrière un proxy inverse.

entrez la description de l'image ici

Ok, je met en œuvre le proxy inverse à l'aide de Nginx sur une instance EC2 utilisant Amazon Linux AMI, mais j'ai trouvé ce problème: Eclipse Che a ouvert le port 8080 pour le client et la plage 32768-65535 pour ses espaces de travail (plus d'informations ici ) .

Donc, j'ai modifié le file nginx.conf comme ceci:

 server { listn 32768; listn 32769; listn 32770; listn 32771; [...] listn 65534; listn 65535; server_name http://eclipse.company.cxx; location / { proxy_pass http://eclipse.company.local:$server_port; } } 

Après le redémarrage nginx, j'ai reçu ce message:

 $ sudo service nginx restart nginx: [emerg] socket() 0.0.0.0:33786 failed (24: Too many open files) nginx: configuration file /etc/nginx/nginx.conf test failed 

Deux questions, s'il vous plaît:

  1. Est-ce une approche valable pour implémenter un proxy inverse dans cette situation?
  2. Si cela est valide, comment puis-je corriger l'erreur "Trop de files ouverts"?

  • Pas sûr de votre environnement, juste comme un indice: la machine en question est-elle accessible au public? Si c'est le cas, implémentez l'authentification / autorisation, ou utilisez un VPN.

    Si cela est valide, comment puis-je corriger l'erreur "Trop de files ouverts"?

  • Probablement, parce qu'il écoute que de nombreux ports, votre nginx , s'exécute contre les limites, en particulier ceux concernant le (s) descripteur (s) de file , qui "[…] est un indicateur (handle) abstrait utilisé pour accéder à un file ou à une autre input / ressource de sortie, comme un tuyau ou une prise réseau […] ".

  • Pour régler ces limites:

    • Tirer parti de la directive nginx worker_rlimit_nofile .
    • Si cela ne suffit pas:

      • Changez la limite large du système, qui est stockée dans /proc/sys/file-max . Pour le modifier, exécutez sysctl -w fs.file-max=${your-new-limit} . Pour le rendre persistant sur les redémarrages, éditez /etc/sysctl.conf .
      • Modifiez la limite user, qui est stockée dans /etc/security/limits.conf : à l'intérieur, mettez par exemple deux lignes en lecture:

         nginx soft nofile ${your-new-soft-limit} nginx hard nofile ${your-new-hard-limit}