寻找扩展Eclipse Che(一个云 IDE),我正在实现一个Che Farm。简而言之,一组 Eclipse Che 实例位于反向代理后面。
好的,我正在使用 Amazon Linux AMI 的 EC2 实例上使用 Nginx 实现反向代理,但我发现了这个问题: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
请教两个问题:
- 这是在这种情况下实现反向代理的有效方法吗?
- 如果这是有效的,我该如何解决错误“打开的文件太多”?
不确定您的环境,只是作为一个提示:有问题的机器是否可以公开访问?如果是这样,请实施身份验证/授权,或使用 VPN。
可能是因为它正在侦听那么多端口,所以你的
nginx
, 违反了限制,特别是那些处理文件描述符的端口, “[...] 是一个抽象指示器(句柄),用于访问文件或其他输入/输出资源,例如管道或网络套接字 [...]”。要调整这些限制:
nginx
指令worker_rlimit_nofile。如果这还不够:
/proc/sys/file-max
. 改变它运行sysctl -w fs.file-max=${your-new-limit}
。为了使其在重新启动等后持续存在,请编辑/etc/sysctl.conf
.更改存储在
/etc/security/limits.conf
: 里面的用户限制,例如两行读取: