The ownership of an entire path hierarchy is important when
nginx needs to
read static content. For instance, the path
/var/www/site.com/one/two/three/numbers.html may be problematic when
three is owned by
root rather than
www-data. Nginx will
respond with status code
403 (forbidden) when
http://site.com/one/two/three/numbers.html is accessed.
To debug this scenario we need to examine the owners and pemissions of each of the directories that lead to
numbers.html. This can be accomplished in linux with the handy
namei command in combination with
Real path will return the fullpath for the file.
> realpath numbers.html /var/www/site.com/one/two/three/numbers.html
namei -l <full_path> will examine each step in the file’s directory structure.
> namei -l $(realpath numbers.html) drwxr-xr-x root root / drwxr-xr-x root root var drwxr-xr-x www-data www-data www drwxr-xr-x www-data www-data site.com drwxr-xr-x www-data www-data one drwxr-xr-x root root two drwxr-xr-x www-data www-data three -rw-r--r-- www-data www-data numbers.html
Ah there it is. The directory
two is owned by
root rather that
chown will help you from here.