在Eclipse Che服务器场上实现Nginx作为EC2实例上的反向代理

寻找扩展Eclipse Che (云IDE),我正在实施一个Che Farm 。 总之,一组反向代理背后的Eclipse Che实例。

在这里输入图像说明

好的,我正在使用Nginx在使用Amazon Linux AMI的EC2实例上实现反向代理,但是我发现这个问题:Eclipse Che需要为客户端打开端口8080,其工作空间的范围是32768-65535(更多信息,请点击这里 ) 。

所以,我修改了nginx.conf文件,如下所示:

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

重新启动nginx之后,我收到了这个消息:

 $ 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 

两个问题,请:

  1. 在这种情况下,这是一个有效的方法来实施反向代理吗?
  2. 如果这是有效的,我怎样才能修复错误“太多打开的文件”?

  • 不知道你的环境,就像一个提示:这台机器是否可以公开访问? 如果是,请执行authentication/授权,或使用VPN。

    如果这是有效的,我怎样才能修复错误“太多打开的文件”?

  • 很可能,因为它正在监听那么多的端口,所以你的nginx运行的限制,特别是那些处理文件描述符的限制,它是一个抽象的指标(句柄),用于访问文件或其他input/输出资源,如pipe道或networking套接字[…]“。

  • 调整这些限制:

    • 利用nginx指令worker_rlimit_nofile 。
    • 如果这还不够:

      • 更改存储在/proc/sys/file-max的系统范围限制。 要修改它,请运行sysctl -w fs.file-max=${your-new-limit} 。 为了使其在重新启动时保持不变,请编辑/etc/sysctl.conf
      • 更改存储在/etc/security/limits.conf的用户限制:在那里,例如input两行:

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