Created
July 13, 2009 19:37
-
-
Save btbytes/146383 to your computer and use it in GitHub Desktop.
User-based Website Directories with Nginx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## REF: http://blog.sbf5.com/?p=6 | |
# For requests starting with a tilde, break them into three components: | |
# 1. The username, everything after the tilde up to the first slash | |
# 2. The file location, everything after the username up to the last slash | |
# 3. The trailing slash(es) | |
# Then, rewrite to go to the f~/ branch. | |
location /~ { | |
if ($request_uri ~ ^/~([^/]*)(/.*[^/]|)(/*)$) { | |
set $homedir $1; | |
set $filedir $2; | |
set $trailingslashes $3; | |
rewrite ^/~([^/]*)(/|$)(.*)$ f~/$3; | |
} | |
} | |
# Here, the user-directory components have been parsed. Use an alias to set | |
# the file directory prefix. But if the file at the requested URI is a | |
# directory, we jump to the ~/ branch for additional processing. | |
location f~/ { | |
alias /home/$homedir/public_html/; | |
if (-d /home/$homedir/public_html$filedir) { | |
rewrite ^f~/(.*) ~/$1; | |
} | |
} | |
# Here, the request is for a directory in a user's home directory. We check | |
# that the request URI contained trailing slashes. If it did not, then we | |
# add the slashes and send a redirect. This circumvents Nginx's faulty | |
# internal slash-adding mechanism. | |
location ~/ { | |
autoindex on; | |
alias /home/$homedir/public_html/; | |
if ($trailingslashes = "") { | |
rewrite .* /~$homedir$filedir/ redirect; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment