Nginx的proxy_pass和proxy_set_header导致打开的文件太多

我在nginx中有下面的.conf来平衡服务器a和b:

upstream myapp { server a.myapp.com; server b.myapp.com; } server { listen 80; server_name myapp.com; location / { proxy_pass http://myapp; } } 

和两个服务器与PHP 7和laravel运行我的应用程序,在同一个nginx内。

通过这个configuration,主机头变成“myapp”,laravel在一些URL系统中使用它来进行资产和链接。

正如文档中所述,我使用了proxy_set_header指令,如下所示:

 upstream myapp { server a.myapp.com; server b.myapp.com; } server { listen 80; server_name myapp.com; location / { proxy_pass http://myapp; proxy_set_header Host $host; #this causes too many open files } } 

但它会导致nginx日志中的“打开的文件太多”,并且请求永远不会结束。

我search了“太多的打开的文件”的错误,并提出了增加限制解决scheme,但在这种情况下明显不起作用。 也许有一些无限循环,我没有看到?

我也尝试在每个应用程序.conf中写入Host头文件,但是头文件不是以这种方式写的:

 fastcgi_pass_header "Host myapp.com"; proxy_set_header Host "myapp.com"; add_header Host "myapp.com";