4

I'm trying to set up an nginx server to replace our current setup based on Apache. Our users have password protected directories (with directives in .htaccess files) which we need to keep protected in the new setup.

As far as I can see, nginx doesn't have a Directory directive, but only a Location directive, which refers to URIs instead of file system paths. This means that if a directory is reachable through more than one URL. I have to include them all in one or more Location directives. For example:

domain.com, root: /home/user/public_html
sub.domain.com, root: /home/user/public_html/sub

If user protects sub.domain.com/admin (directory /home/user/public_html/sub/admin) I must make sure that both /admin in sub.domain.com and /sub/admin in domain.com are protected with the same password file. I'd rather protect the directory itself, and not the URLs through which visitors can access its contents.

So, does nginx have any mechanism that allows to refer to file system paths in configuration files, like Apache's <Directory> blocks do - or maybe I'm just misreading nginx's documentation?

2
  • I do not know of a direct replacement for the Directory attribute in Nginx. This is one of the biggest challenges in porting to Nginx is moving from a filesystem-focused view of configuration to a URI-focused configuration. Also, don't forget about regex. If everything is in /admin then a regex may work. Oct 2, 2012 at 18:39
  • 1
    Don't lay out the directory structure this way in the first place. Use separate directories for each virtual host, which are not nested within each other. Oct 26, 2012 at 17:36

1 Answer 1

1

There's no such mechanism in nginx. I usually set different directories for different hosts:

domain.com, root: /home/user/sites/domain.com
sub.domain.com, root: /home/user/sites/sub.domain.com

which simplifies (nginx) configuration.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .