寻找扩展日蚀车(云 IDE),我正在实现一个车农场。简而言之,一组位于反向代理后面的 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
请问两个问题:
- 在这种情况下,这是一种实现反向代理的有效方法吗?
- 如果这是有效的,我该如何修复“打开文件太多”的错误?
答案1
不确定你的环境,仅供参考:所讨论的机器是否可以公开访问?如果可以,请实施身份验证/授权,或使用 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
:在里面,例如输入两行:nginx soft nofile ${your-new-soft-limit} nginx hard nofile ${your-new-hard-limit}
- 更改存储在 中的系统范围限制
- 利用该