在 EC2 实例上为 Eclipse Che farm 实现 Nginx 作为反向代理

在 EC2 实例上为 Eclipse Che farm 实现 Nginx 作为反向代理

寻找扩展日蚀车(云 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. 在这种情况下,这是一种实现反向代理的有效方法吗?
  2. 如果这是有效的,我该如何修复“打开文件太多”的错误?

答案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}
        

相关内容