修复Nginx出现500 Internal Server Error的问题
1. 前言
在使用Nginx做IIS站点反向代理的时候, 遇到了500错误, 开启并查找日志后, 发现异常信息是: maximum number of descriptors supported by select() is 1024 while connecting to upstream。
2. 修复过程
-
刚开始以为是最大连接数的问题,修改后重新测试,发现只要频繁刷新还是会出现一样的问题, 并且,出现问题的时候, IIS站点运行正常,说明问题是出现在Nginx这台服务器上。
-
之后想到, 因为Nginx是部署在Windows服务器上的, 是否是因为服务器文件句柄数据的限制的原因呢?最后查证后顺利解决了该问题。
3. 修复方案
-
下载专门的nginx for windows版本,下载地址:http://nginx-win.ecsds.eu/download/, 下载最新的Unicorn版本即可。解压后,文件如下图所示:
-
双击运行 TweakOptimize tcpip parameters for nginx connections.reg 文件,修改服务器文件句柄数据的限制。
-
程序包里的nginx_basic.exe更名为nginx.exe,替换nginx.exe文件,之后运行即可。