sasanrose / phpredmin

Yet another web interface for Redis
BSD 3-Clause "New" or "Revised" License
404 stars 96 forks source link

Nginx conf for phpredmin #62

Open psokolov opened 9 years ago

psokolov commented 9 years ago

Hi, thank You for admin panel! Could you post the configs for Nginx, router.php is not simple to fix the rewrite location rules. URLs look like /index.php/welcome/index/0/0 and so by default script_name is /index.php/welcome/index/0/0. What is the reason to use such complicated URIs?

devoto13 commented 9 years ago

This config posted by author works for me. Hope it helps.

sasanrose commented 9 years ago

@psokolov Does the problem still exist?

Sorcysama commented 9 years ago

Hi, I still have a problem with my nginx setup.

Can you please tell me the rewrite I have to setup ?

Urls are like : index.php / Action_Name / info / 0 / 0 ? param = ...

thanks

CybotTM commented 9 years ago

i have the same problem

matinfo commented 8 years ago

Here a idea (ongoing progress) nginx conf setup inside a already php-fpm server to serve at www.mydomain.com/phpredmin that worked for me:

## PHP Redis monitor
location ~ ^/phpredmin/(.+\.php.*)$ {

      alias /var/www/phpredmin/public/$1;

      index  index.html index.php;
      try_files $uri $uri/ /index.php?$args;

      location ~ ^/phpredmin/.+\.(js|css|png|jpg|gif|bmp|swf|ico|pdf|mov|fla|mp4|3gp|zip|rar|7z)$ {
          try_files $uri = 404;
          access_log off;
          expires 24h;
          alias /var/www/phpredmin/public/$1;
      }

      location ~ ^/phpredmin/.+\.php.*$ {
          fastcgi_split_path_info ^(.+\.php)(/.+)$;

          set $fsn /index.php;
          if (-f $document_root$fastcgi_script_name){
             set $fsn $fastcgi_script_name;
          }

          # php5-fpm:
          fastcgi_pass unix:/var/run/phpfpm-xyz.sock;
          include fastcgi_params;
          fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;
          fastcgi_param  PATH_INFO        $fastcgi_path_info;
          fastcgi_param  PATH_TRANSLATED  $document_root$fsn;
      }
 }
CybotTM commented 8 years ago

my solution is just replacing try_files $uri =404; with try_files $fastcgi_script_name =404;

or you drop try_files at all, or only the =404 part as @matinfo did.

matinfo commented 8 years ago

Finally here my nginx config that work well to serve http://www.mydomain.com/phpredmin/ (note: the / at the end mandatory):

server  {
    name www.mydomain.com;
    ...

    ## PHP Redis monitor
    location /phpredmin {
        index  index.php;
        root /var/www/phpredmin;

        try_files $uri $uri/ /index.php?$args;

        location ~ ^/phpredmin/.+\.php {

            fastcgi_split_path_info ^(.+\.php)(/.+)$;

            set $fsn /index.php;
            if (-f $document_root$fastcgi_script_name) {
                set $fsn $fastcgi_script_name;
            }

            # php5-fpm
            fastcgi_pass unix:/var/tmp/phpfpm.sock;
            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fsn;

            include fastcgi_params;
        }

        location ~ ^/phpredmin/(.+\.(js|css|png|jpg|gif|ico))$ {
            access_log off;
            expires 24h;
            root /var/www/phpredmin;

            try_files $uri =404;
        }
    }
}

Notice: to work the public directory need symlinked to phpredmin, like this:

gabrielwinnberg commented 8 years ago

Is this really necessary? I mean unless you really want a different url than www.example.com/phpredmin/public/index.php ?

I just threw it into the web root (as per the installation instruction) and it seems to work. Or what am I missing?

iFedix commented 7 years ago

@matinfo hey i tried your script and it worked.. now, how can i modify it in in order that the application answers me when i digit www.mydomain.com instead of http://www.mydomain.com/phpredmin/? Thank you!

matinfo commented 7 years ago

@iFedix not sur with the project structure of phpredmin is possible.

Workaround add permanent redirection from / to /phpredmin.

rewrite ^(.*) http://www.domain.com/phpredmin/$1 permanent;

--

Or copy content of /public to /var/www/phpredmin and change some location like $path = '../' in index.php to $path = '.'. Plus change location /phpredmin to location /.

Not tested!

iFedix commented 7 years ago

@matinfo thank you! :D

gabrielt commented 5 years ago

What a mess! it took me a couple of hours to get this configured in ngninx... It makes no sense this piece of software to require so much configuration.

Anyway, @matinfo solution worked, but I had to remove the last bracket (location ~ ^/phpredmin/(.+.(js|css|png|jpg|gif|ico))$), otherwise CSS files wouldn't load.