【发布时间】:2014-02-16 01:07:11
【问题描述】:
我正在运行一个 nginx 服务器和一个 node express web 服务器,使用 daemontools,设置为通过 Unix 域套接字进行通信。有几个问题:
- socket 文件在关机时仍然存在,所以我必须在重新启动服务器时将其删除,否则我会收到 EADDRINUSE 错误。
- nginx服务器以nginx用户运行,node服务器以node用户运行。
- 在服务器启动时 Express 会创建套接字文件,并且 umask 将套接字文件的权限设置为 755。
- setuidgid 应用程序将组设置为用户的默认组,在这种情况下都是节点用户名。
- 应用程序的部署脚本和 daemontools 的运行脚本在节点服务器实例启动之前执行,因此无法设置文件的权限,因为它必须在启动过程中重新创建。
如果我 chgrp 和 chmod g+w 套接字文件,一切正常。有没有办法进行设置,以便生成具有正确权限的节点应用程序的套接字文件,以便 nginx 能够写入它而不损害一个应用程序或另一个应用程序的安全独立性?我什至可以将 nginx 添加到节点用户的组中,如果还有一种方法可以设置套接字文件的权限以便它是组可写的。
【问题讨论】:
-
我也很想知道一种干净的方法来做到这一点。我最终放弃并重新使用 TCP。
标签: node.js nginx express file-permissions unix-socket