need help cleaning up user directory and php rules
Igor Sysoev
is at rambler-co.ru
Sat Mar 14 21:33:43 MSK 2009
On Sat, Mar 14, 2009 at 11:25:10AM -0700, mike wrote:
> Is all you want the ability to have
>
> foo.com/~username/ ?
>
> If so I have it working a lot easier. Well, at least for ~mike. But
> with the new regex location/etc. support it might be able to work
> without that.
>
> something like
>
> location ^/~(.+) {
> root /home/$1/public_html/;
> }
>
> Perhaps? Not sure. I should probably try it but I'm too lazy. Igor
> would probably know how to hack it quick.
It should be:
location ^/~(.+?)(/.+)?$ {
alias /home/$1/public_html$2;
}
because
root /home/$1/public_html/;
will map /~mike/some/page.html to /home/mike/public_html/~mike/some/page.html;
> On Sat, Mar 14, 2009 at 10:59 AM, Edho P Arief <edhoprima at gmail.com> wrote:
> > ...and 10 hours later I fixed it by myself. Tested with most common
> > cases, also ensured basic logic. Can be cleaned up better (or perhaps
> > squash more bugs, if any) but I'm too sleepy right now.
> >
> > Also probably rather slow. My own connection is currently slow and I
> > only tried this on remote system.
> >
> >
> > server {
> > listen 80;
> > server_name genshiken.unit.itb.ac.id;
> > index index.php;
> > #change /usr/local/etc/nginx/ to default nginx root path
> > if ($request_filename ~
> > ^/usr/local/etc/nginx//~([a-zA-Z0-9]*)(.*[^/]|)(/*)$) {
> > #$org_uri is old, unused variable but might have some
> > use for improvement (or deletion)
> > set $org_uri $request_uri;
> > set $is_userdir 1;
> > set $newroot /home/$1/public_html;
> > set $homedir $1;
> > set $filedir $2;
> > set $slashes $3;
> > rewrite ^/~.* f~/;
> > }
> > if ($is_userdir != 1) {
> > set $newroot /usr/local/www/data;
> > #set to random string if not userdir (see above).
> > set $org_uri zxzz123;
> > }
> >
> > root $newroot;
> >
> > location f~/ {
> > #$is_ok: check wheter to apply rewrite or not at this
> > and next location
> > set $is_ok 1;
> > if (-d /home/$homedir/public_html$filedir) {
> > set $is_ok 2;
> > rewrite ^f~/$ d~/;
> > }
> > if ($is_ok = 1) {
> > rewrite ^f~/$ finaldest~/;
> > }
> > }
> >
> > location d~/ {
> > #add slash for directory (if there's none yet - to
> > avoid unwanted rewrite by nginx)
> > if ($slashes = "") {rewrite ^d~/$ /~$homedir$filedir/
> > redirect; set $is_ok 1; }
> > if ($is_ok = 2) {rewrite ^d~/$ finaldest~/; set $is_ok 1; }
> > }
> >
> > location finaldest~/ {
> > #extra: user-specific rewrite
> > if ($homedir = sampleuser) {rewrite ^finaldest~/$ sampleuser~/;}
> > #final destination (if there's no user-specific rewrite)
> > rewrite ^finaldest~/$ $filedir$slashes;
> > }
> >
> > #user-specific rewrite block
> > location sampleuser~/ {
> > #or sampleuser~/$filedir$slashes; to get subfolder
> > location ruling
> > rewrite ^sampleuser~/$ $filedir$slashes;
> > #wordpress. haven't able to make use of try_files or
> > other modern mechanics yet
> > if (!-e $request_filename) {
> > rewrite ^(.*)$ /blog/index.php?q=$1 last;
> > break;
> > }
> > }
> >
> > #just a standard php block.
> > location ~ \.php$ {
> > if (!-f $document_root$fastcgi_script_name) { return
> > 404; break; }
> > fastcgi_pass 127.0.0.1:9000;
> > fastcgi_index index.php;
> > fastcgi_param SCRIPT_FILENAME
> > $document_root$fastcgi_script_name;
> > include fastcgi_params;
> > }
> >
> >
> >
> > --
> > O< ascii ribbon campaign - stop html mail - www.asciiribbon.org
> >
> >
--
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list