nginx需要访问哪些目录?

我正在为nginx编写一个systemd服务文件,而以root身份运行的面向Internet的服务是一个坏主意,但是我需要nginx来访问每个用户主目录中的某个目录。

例如

/ home / user1 / static / home / user2 / static

但是,我不希望其他任何人,但Nginx(和根)能够访问用户目录。

还有两难。

/ home / user1和subdirs需要属于user1:user1,以防一个用户受到攻击。

这意味着,除非我错过了一些东西,那么nginx需要以root身份运行。 GOTO 10。

正因为如此,它需要访问一些目录。 在这种情况下,它的configuration目录是/ etc / nginx。 但也包括其他目录。 而我的问题是哪些目录是那些?

Nginx需要读/ home / user#/ static。

每个用户将负责确保nginx能够读取目录。

默认情况下nginx是从READS中读取的

/ etc / nginx和子目录

nginx只写入configuration的位置,如configuration的日志文件(通常位于/ var / log / nginx)。

记得检查你的init脚本中的“-g”参数,它可以包含一些额外的选项(比如使用什么PID文件)

另外,nginx通常以root用户身份启动,并在以后下载到configuration的用户。

作为解决方法,您可以:

  1. 在/ home / user1,/ home / user2等目录中设置750个权限,为每个用户设置〜/ static dir。

  2. 如果nginx工作人员在nginx:nginx下运行,则可以将所有用户添加到nginx组,nginx现在将能够访问/ home / user1 / static,/ home / user2 / static等

当然,在本地设置750并不是一个好习惯,但是在这种情况下,你没有别的办法,因为如果你将在root下运行nginx,它将能够访问整个系统,不仅仅是你的用户dirs,也许是一些私人的钥匙和其他重要的事情。

还有另一种方法来做到这一点:

  1. 在其他地方创build目录,例如/ srv / user1,/ srv / user2,为它们设置权限750和user1:nginx,user2:nginx owners:groups。 所以nginx可以很容易地从这个dirs读取。
  2. 创build一个符号链接到这个目录:

    / home / user1 / static – > / srv / user1

    / home / user2 / static – > / srv / user2

    所以用户可以方便地访问和修改它们,而用户的家庭权限留下700。

所以这不是解决方法,而是解决scheme。 你不需要以root身份运行nginx。