NGINX en 3rd party software

By | 2 juli 2012

Gallery 3

Gallery3 is een populaire OpenSource foto-album webapplicatie. Het maakt echter gebruik van een aantal redirects om zgn. nice URL’s te kunnen gebruiken en hiervoor wordt een .htaccess bestand voor Apache meegeleverd. Voor NGINX kan volstaan worden om de volgende regels op te nemen in de configuratie van de server of virtual host:

 location /gallery3/ {
                if (!-e $request_filename) {
                      rewrite ^/gallery3/index.php/(.+)$ /gallery3/index.php?kohana_uri=$1 last;
                      rewrite ^/gallery3/(.+)$ /gallery3/index.php?kohana_uri=$1 last;
                      rewrite ^/gallery3/$ /gallery3/index.php?kohana_uri=/ last;
                     }
      }

In dit voorbeeld (location /gallery3) wordt er vanuit gegaan dat de gallery software vanaf de webroot in de directory gallery3 is geinstalleerd.

ELGG

ELGG is een populaire OpenSource community building software webapplicatie en maakt intensief gebruik van redirects. Om ELGG te kunnen gebruiken met NGINX als webserver kan onderstaande configuratie worden gebruikt:

 location ~ ^/cache/ {
   rewrite ^/cache\/(.*)$ /engine/handlers/cache_handler.php?request=$1&$args;
 }

location ~* ^/pg/(css|js) {
   rewrite ^/pg\/([A-Za-z0-9\_\-]+)$ /engine/handlers/page_handler.php?handler=$1&$args;
   rewrite ^/pg\/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/page_handler.php?handler=$1&page=$2&$args;
}

 # For all other requests, try the file, or rewrite if it's PHP

location / {
   try_files $uri $uri/ @rewrite;
}

 location @rewrite {
    rewrite ^/tag\/(.+)\/?$ /engine/handlers/page_handler.php?handler=search&page=$1;
    rewrite ^/action\/([A-Za-z0-9\_\-\/]+)$ /engine/handlers/action_handler.php?action=$1&$args;
    rewrite ^/services\/api\/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/service_handler.php?handler=$1&request=$2&$args;
    rewrite ^/export\/([A-Za-z]+)\/([0-9]+)\/?$ /engine/handlers/export_handler.php?view=$1&guid=$2;
    rewrite ^/export\/([A-Za-z]+)\/([0-9]+)\/([A-Za-z]+)\/([A-Za-z0-9\_]+)\/$ /engine/handlers/export_handler.php?view=$1&guid=$2&type=$3&idname=$4;
    rewrite /xml-rpc.php /engine/handlers/xml-rpc_handler.php;
    rewrite /mt/mt-xmlrpc.cgi /engine/handlers/xml-rpc_handler.php;
    rewrite ^/rewrite.php$ /install.php;

 if (!-d $request_filename){
    set $rule_11 1$rule_11;
 }

 if (!-f $request_filename){
     set $rule_11 2$rule_11;
 }

 if ($rule_11 = "21"){
     rewrite ^/([A-Za-z0-9\_\-]+)$ /engine/handlers/page_handler.php?handler=$1;
 }

 if (!-d $request_filename){
     set $rule_12 1$rule_12;
 }

 if (!-f $request_filename){
        set $rule_12 2$rule_12;
 }

 if ($rule_12 = "21"){
        rewrite ^/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/page_handler.php?handler=$1&page=$2;
 }