Alias usando Nginx causando o loop infinito de login do phpMyAdmin

4

Recentemente eu tenho tentado configurar um servidor web usando o Nginx (eu normalmente uso o Apache). No entanto, encontrei um problema ao tentar instalar o phpMyAdmin em um alias . O alias corretamente leva você também a tela de login do phpMyAdmin, no entanto, quando você insere credenciais válidas e acerta, você volta para a tela de login sem erros.

Soou como um problema de cookie ou sessão para mim ... mas se eu criar um link simbólico para o diretório phpMyAdmin e tentar fazer o login através da versão com link simbólico ele funciona bem! Tanto o link simbólico quanto o nome alternativo definem o mesmo número de cookies e ambos os conjuntos parecem definir os cookies para o domínio e caminho corretos.

Minha configuração do Nginx para o alias do php é a seguinte:

location ~ ^/phpmyadmin/(.*\.php)$ {
    alias /usr/share/phpMyAdmin/$1;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $request_filename;
}
  • Estou executando o Nginx 0.8.53
  • PHP 5.3.3
  • MySQL 5.1.47
  • phpMyAdmin 3.3.9 - instalação automática
  • E o php-mcrypt está instalado.

Alguém já experimentou esse comportamento antes? Alguém tem alguma idéia sobre como consertar isso?

    
por Seb Dangerfield 16.01.2011 / 12:35

4 respostas

6

Eu tive exatamente o mesmo problema. Eu corri um site com uma raiz de doc em /var/www/somesite e queria ligar o phpmyadmin a alguma sub-pasta no site. Eu tentei isso com essa configuração no nginx:

root /var/www/somesite;

location /pma/ {
    alias /usr/share/phpmyadmin/;
}

location ~ ^/pma/(.+\.php)$ {
    alias /usr/share/phpmyadmin/$1;
    fastcgi_pass   unix:/tmp/phpfpm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $request_filename;
    include fastcgi_params;
}

Isso pareceu funcionar, exceto quando eu entrei, como você descreveu, eu acabei de ver a primeira página novamente. Nenhum erro, nada. Se eu fiz o login com uma senha incorreta, recebi um erro "Não é possível fazer login no servidor MySQL", como seria de se esperar.

Solução
Finalmente, o que fiz foi arrastar todas as coisas de fastcgi_params e descobri que mudar o DOCUMENT_ROOT -parameter corrigia isso. Então o nginx-config acima mudou para:

root /var/www/somesite;

location /pma/ {
    alias /usr/share/phpmyadmin/;
}

location ~ ^/pma/(.+\.php)$ {
    alias /usr/share/phpmyadmin/$1;
    fastcgi_pass   unix:/tmp/phpfpm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $request_filename;

    # From fastcgi_params
    fastcgi_param  QUERY_STRING       $query_string;
    fastcgi_param  REQUEST_METHOD     $request_method;
    fastcgi_param  CONTENT_TYPE       $content_type;
    fastcgi_param  CONTENT_LENGTH     $content_length;
    fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
    fastcgi_param  REQUEST_URI        $request_uri;
    fastcgi_param  DOCUMENT_URI       $document_uri;
    fastcgi_param  DOCUMENT_ROOT      /usr/share/phpmyadmin; # <-- Changed
    fastcgi_param  SERVER_PROTOCOL    $server_protocol;
    fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
    fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
    fastcgi_param  REMOTE_ADDR        $remote_addr;
    fastcgi_param  REMOTE_PORT        $remote_port;
    fastcgi_param  SERVER_ADDR        $server_addr;
    fastcgi_param  SERVER_PORT        $server_port;
    fastcgi_param  SERVER_NAME        $server_name;
    fastcgi_param  REDIRECT_STATUS    200;
}

(Nota: acho que isso é um problema com o nginx, que você não pode definir um alias e a raiz do doc ao mesmo tempo. Estranho, na verdade.)

    
por 28.04.2011 / 16:19
1

Esta é minha configuração:

location /phpmyadmin {
    alias   /usr/share/phpmyadmin;
    index index.php;
    location ~ /([^/]+\.php)$ {
        try_files /$1 =404;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        location ~ /phpmyadmin/js/([^/]+\.php)$ {
            try_files /phpmyadmin/js/$1 =404;
            fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    }
}
    
por 14.07.2016 / 08:52
0

Igor indica que sua configuração exata deve estar funcionando:

link

Você pode postar lá e ver o que eles têm a dizer; sua configuração parece totalmente válida para mim também.

    
por 16.01.2011 / 16:41
0

Se você estiver executando o phpMyAdmin em Nginx + phpfpm, é certamente um problema de propriedade. Tome as seguintes ações para resolvê-lo:
1. Observe o valor "session.save_path" (o valor padrão é "/ var / lib / php / session") no arquivo de configuração do php-fpm localizado em /etc/php-fpm.d/www.conf. listen.owner usuário e grupo devem possuir a pasta de caminho definida lá.
2. Execute "chown -R nginx: nginx / var / lib / php / session" como sudo para corrigi-lo.
3. Agora você deve conseguir acessar o phpMyAdmin sem problemas.

    
por 06.01.2016 / 14:36