How to configure phpmyadmin with nginx?

Hi, phpmyadmin is installed in /usr/share/phpmyadmin and i have the
following vhost configuration file. How to configure phpmyadmin so i can
use: http://mydomain.com/phpmyadminThank youserver {
 listen 80;
 server_name www.mydomain.com;
 Â
 #redirect www to non-www
 rewrite ^/(.*) http://mydomain.com/$1 permanent;
 Â
 Â
 }

server {
 listen 80;
 server_name mydomain.com;
 access_log /home/mydomain/log/access.log;
 error_log /home/mydomain/log/error.log;
 Â
 Â
 Â
 location / {
 root /home/mydomain/public_html/;
 index index.php index.html; Â
 expires 30d;
 Â
 #stop image and files hotlinking
 location ~* ^.+.(gif|jpg|png|swf|flv|rar|zip|jpeg|css)$ {
 valid_referers none blocked mydomain.com www.mydomain.com
.google.com .yahoo.com;
 if ($invalid_referer) {
 return 444;
 }
 }
 Â
 #joomla sef url’s
 if (!-e $request_filename) {
 rewrite ^(.
)$ /index.php?q=$1 last;
 break;
 }
 }
 Â
 if ( $args ~ “mosConfig_[a-zA-Z_]{1,21}(=|%3d)” ) {
 set $args “”;
 rewrite ^.
$ http://$host/index.php last;
 return 403;
 }

 if ( $args ~ “base64_encode.(.)” ) {
 set $args “”;
 rewrite ^.*$ http://$host/index.php last;
 return 403;
 }

 if ( $args ~ “(<|%3C).script.(>|%3E)” ) {
 set $args “”;
 rewrite ^.$ http://$host/index.php last;
 return 403;
 }
 Â
 if ( $args ~ “GLOBALS(=|[|%[0-9A-Z]{0,2})” ) {
 set $args “”;
 rewrite ^.
$ http://$host/index.php last;
 return 403;
 }

 if ( $args ~ “_REQUEST(=|[|%[0-9A-Z]{0,2})” ) {
 set $args “”;
 rewrite ^.*$ http://$host/index.php last;
 return 403;
 }
 Â
 Â
 Â
 # pass the PHP scripts to FastCGI server listening on
127.0.0.1:9000
 location ~ .php$Â
 {
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 include /usr/local/nginx/conf/fastcgi_params;
 fastcgi_param SCRIPT_FILENAME
/home/mydomain/public_html/$fastcgi_script_name;
 }
 Â

 ## All other errors get the generic error page
 error_page 400 401 402 403 404 405 406 407 408 409 410 411 412 413
414 415 416 417
 500 501 502 503 504 505 /error_page.html;
 location $document_root/error_page.html {
 internal;
 Â
 }
 Â
 }

On Sun, Sep 13, 2009 at 4:54 AM, SE7EN[email protected] wrote:

 #redirect www to non-www
 error_log /home/mydomain/log/error.log;

location ~ /phpmyadmin/.*.php$ {
root /usr/share/;
…php fastcgi settings…;
}

location /phpmyadmin/ {
root /usr/share/;
index index.php;
}

I added this,I verify it, everything is correct, my site works fine but
accessing http://mydomain.com/phpmyadmin still doesn’t work, a 500
server errror appears.location ~ /phpmyadmin/.*.php$ {
 root /usr/share/;
 fastcgi_pass 127.0.0.1:9002;
 fastcgi_index index.php;
 include /usr/local/nginx/conf/fastcgi_params;
 fastcgi_param SCRIPT_FILENAME
/usr/share/phpmyadmin$fastcgi_script_name;
 }

 location /phpmyadmin/ {
 root /usr/share/;
 index index.php;
 }

— On Sun, 9/13/09, Edho P Arief [email protected] wrote:

From: Edho P Arief [email protected]
Subject: Re: How to configure phpmyadmin with nginx ?
To: [email protected]
Date: Sunday, September 13, 2009, 9:31 AM

On Sun, Sep 13, 2009 at 4:54 AM, SE7EN[email protected] wrote:

 #redirect www to non-www
 error_log /home/mydomain/log/error.log;

location ~ /phpmyadmin/.*.php$ {
 root /usr/share/;
 …php fastcgi settings…;
}

location /phpmyadmin/ {
 root /usr/share/;
 index index.php;
}

Hi se7en,

Your location line is incorrect and you may need a line to send php over
also. Try the following inside your server directive.

index index.php index.htm index.html;
location ^~ /phpmyadmin/ {
root /usr/share;
include /???/fastcgi_params;
fastcgi_pass 127.0.0:9002;
}
location ~ .php {
include /???/fastcgi_params;
fastcgi_pass 127.0.0.1:9002;
}

Don’t forget to replace the ??? with the correct path - mine is
/etc/nginx/ and check that phpmyadmin
has been installed in /usr/share/phpmyadmin - or adjust the root.

Regards

Ian

I don’t know what tot say, here is my config file (after the sample with
subdomain that works) but it still doesn’t work. phpmyadmin is installed
in /usr/share/phpmyadmin and site works fine, so it’s no error in my
config file. it works only when I create a new vhost file like this and
access phpmyadmin as a subdomain

server {
listen 80;
server_name phpmyadmin.domainname.com;
access_log /home/apps/logs/phpmyadmin.access_log;
error_log /home/apps/logs/phpmyadmin.error_log;

location / {
     root /usr/share/phpmyadmin;
     index index.php;
}

location ~ \.php$ {
    fastcgi_pass   127.0.0.1:8888;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME 

/usr/share/phpmyadmin$fastcgi_script_name;
include /etc/nginx/fastcgi.conf;
}
}

vhost.conf
server {
listen 80;
 server_name www.mydomain.com;

                    #redirect www to non-www

 rewrite ^/(.*) http://mydomain.com/$1 permanent;

   }

server {
listen 80;
 server_name mydomain.com;
 access_log /home/mydomain/log/access.log;
 error_log /home/mydomain/log/error.log;

        index index.php index.htm index.html;

location ^~ /phpmyadmin/ {
root /usr/share;
include /usr/local/nginx/conf/fastcgi_params;
fastcgi_pass 127.0.0:9002;
}

location / {
 root /home/mydomain/public_html/;
index index.php index.html;
expires 30d;

                            #stop image and files hotlinking
                            location ~* 

^.+.(gif|jpg|png|swf|flv|rar|zip|jpeg|css)$ {
 valid_referers none blocked mydomain.com
www.mydomain.com *.google.com *.yahoo.com;
if ($invalid_referer) {
return 444;
}
}

                            #joomla sef url's
                            if (!-e $request_filename) {
                                    rewrite  ^(.*)$  /index.php?q=$1 

last;
break;
}
}

                            if ( $args ~ 

“mosConfig_[a-zA-Z_]{1,21}(=|%3d)” ) {
set $args “”;

rewrite ^.*$ http://$host/index.php last;
return 403;
}

                            if ( $args ~ "base64_encode.*\(.*\)" ) {
                            set $args "";
                            rewrite ^.*$ http://$host/index.php 

last;
return 403;
}

                            if ( $args ~ 

“(<|%3C).script.(>|%3E)” ) {
set $args “”;
rewrite ^.*$ http://$host/index.php
last;
return 403;
}

                            if ( $args ~ 

“GLOBALS(=|[|%[0-9A-Z]{0,2})” ) {
set $args “”;
rewrite ^.*$ http://$host/index.php
last;
return 403;
}

                            if ( $args ~ 

“_REQUEST(=|[|%[0-9A-Z]{0,2})” ) {
set $args “”;
rewrite ^.*$ http://$host/index.php
last;
return 403;
}

pass the PHP scripts to FastCGI server listening on 127.0.0.1:9002

        location ~ \.php$
                            {
        fastcgi_pass 127.0.0.1:9002;
        fastcgi_index index.php;
        include /usr/local/nginx/conf/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME 

/home/digitalfav/public_html/$fastcgi_script_name;
}

                    ## All other errors get the generic error page
                    error_page 400 401 402 403 404 405 406 407 408 

409 410 411 412 413 414 415 416 417
500 501 502 503 504 505 /error_page.html;
location $document_root/error_page.html {
internal;

             }

             }

— On Mon, 9/14/09, Ian H. [email protected] wrote:

From: Ian H. [email protected]
Subject: Re: How to configure phpmyadmin with nginx ?
To: [email protected]
Date: Monday, September 14, 2009, 12:52 AM

Hi se7en,

Your location line is incorrect and you may need a line to send php over
also. Try the following inside your server directive.

index index.php index.htm index.html;
location   ^~ /phpmyadmin/ {
 root /usr/share;
 include /???/fastcgi_params;
 fastcgi_pass 127.0.0:9002;
}
location ~ .php {
   include /???/fastcgi_params;
   fastcgi_pass 127.0.0.1:9002;
}

Don’t forget to replace the ??? with the correct path - mine is
/etc/nginx/ and check that phpmyadmin
has been installed in /usr/share/phpmyadmin - or adjust the root.

Regards

Ian

I think i got it, if i add this, it works but the images of phpmyadmin
don’t show, maybe a permission issue ?
ndex index.php index.htm index.html;
location   ^~ /phpmyadmin/ {
 root /usr/share;
 include /usr/local/nginx/conf/fastcgi_params;
 fastcgi_pass 127.0.0:9002;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9002;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$fastcgi_script_name;
include /usr/local/nginx/conf/fastcgi_params;
}

— On Mon, 9/14/09, Ian H. [email protected] wrote:

From: Ian H. [email protected]
Subject: Re: How to configure phpmyadmin with nginx ?
To: [email protected]
Date: Monday, September 14, 2009, 12:52 AM

Hi se7en,

Your location line is incorrect and you may need a line to send php over
also. Try the following inside your server directive.

index index.php index.htm index.html;
location   ^~ /phpmyadmin/ {
 root /usr/share;
 include /???/fastcgi_params;
 fastcgi_pass 127.0.0:9002;
}
location ~ .php {
   include /???/fastcgi_params;
   fastcgi_pass 127.0.0.1:9002;
}

Don’t forget to replace the ??? with the correct path - mine is
/etc/nginx/ and check that phpmyadmin
has been installed in /usr/share/phpmyadmin - or adjust the root.

Regards

Ian

SE7EN wrote:

I think i got it, if i add this, it works but the images of phpmyadmin
don’t show, maybe a permission issue ?

Improbable and easy to check - the server only needs read access.

More likely IMO, is that phpmyadmin is asking for them in the wrong
place.
Take a look at the source of a phpmyadmin page.

My logon screen contains

<img src="./themes/original/img/logo_right.png
view-source:http://212.13.194.210/phpmyadmin/themes/original/img/logo_right.png"
id=“imLogo” … etc

that is served from

/src/share/phpmyadmin/themes/original/img/logo_right.png

If you request

themes/original/img/logo_right.png
and
phpmyadmin/phpmyadmin/themes/original/img/logo_right.png

you will find out which.

dex index.php index.htm index.html;
location ^~ /phpmyadmin/ {
root /usr/share;
include /usr/local/nginx/conf/fastcgi_params;
fastcgi_pass 127.0.0:9002;

Did you mean 127.0.0.1:9002?

}

location ~ .php$ {
fastcgi_pass 127.0.0.1:9002;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$fastcgi_script_name;

This ^^^ line is redundant because there is a line containing

fastcgi_params SCRIPT_FILENAME $document_root$fastcgi_script_name;

in the included file below, that will result in the same thing.

Ian

Hello!
I had the same problem and Igor said that nginx does not handle (yet?)
nested locations. So you have to write in this way:

location /phpmyadmin/ {
alias /usr/share/phpmyadmin/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+.php)$ {
alias /usr/share/phpmyadmin/$1;
fastcgi_pass 127.0.0.1:9002;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}

Bye,
a