로그인시 Nginx phpmyadmin이 / phpmyadmin 대신 /로 리디렉션


9

내 nginx 설치에서 phpmyadmin에 문제가 있습니다.

내가 입력하는 경우 <ServerIP>/phpmyadmin와의 로그, 내가로 리디렉션 <ServerIP>/index.php?<tokenstuff>대신<ServerIP>/phpmyadmin/index.php?<tokenstuff>

Nginx 설정 파일 :

user  nginx;
worker_processes  5;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  2;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

Default.conf :

server {
    listen       80;
    server_name  _;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /usr/share/nginx/html;
        try_files $uri =404;
        fastcgi_pass   unix:/tmp/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
    location /phpmyadmin {
    root /usr/share/;
    index index.php index.html index.htm;
    location ~ ^/phpmyadmin/(.+\.php)$ {
        try_files $uri =404;
        root /usr/share/;
        fastcgi_pass unix:/tmp/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        include fastcgi_params;
        fastcgi_param PATH_INFO $fastcgi_script_name;
    }

    location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
        root /usr/share/;
    }
}
}

(구성 파일 정리에 대한 일반적인 팁도 허용됩니다)


@MichaelHampton 사실 나는 그것이 문제라고 생각합니다. yum을 통해 설치된 패키지를 제거하고 phpmyadmin 웹 사이트 및 voilá에서 최신 패키지를 다운로드했습니다. 당신이 대답을한다면, 나는 그것을 받아 들일 것입니다.
— Frederik Nielsen

답변:


2

이것은 nginx 문제처럼 들리지 않습니다. 이것은 phpMyAdmin이 올바르게 설치되지 않은 것 같고 /대신에 있다고 생각합니다 /phpmyadmin. phpMyAdmin 구성을 확인하십시오.


이것이 올바른 답변으로 안내하는 것입니다-phpmyadmin 재설치-감사합니다! :)
— Frederik Nielsen

4
"그냥 다시 설치"는 터무니없는 대답입니다. phpMyAdmin의 구성이 잘못되면 전체 응용 프로그램을 다시 설치하지 않고도 재구성 할 수있는 방법이 있어야합니다!
— alexw

1
자세한 내용은 다음과 같습니다. 'PHP가 생각하는 위치'매개 변수를 설정하는 방법과 위치를 설명하는 소스로 연결하십시오.
— Diana

이것은 답변보다 더 많은 의견입니다. 큰 제안이지만 phpMyAdmin에서 무엇을 확인합니까?
— SherylHohman

@SherylHohman 흥미로운 질문이 따로있을 수도 있습니다. 그러나 이것은 오래 전에 해결되었습니다.
— 마이클 햄튼

13

저자가 phpMyAdmin 재설치 문제를 해결했지만 로그인시 리디렉션을 처리하도록 nginx를 올바르게 구성해야합니다.

며칠 후 키보드로 머리를 부딪친 후에 마침내 진정한 해결책을 찾았고이 스레드는 여전히 Google 검색에서 우선 순위가 높으므로 여기에서 공유하고 있습니다.

링크에 명시된 바와 같이 : http://www.samundra.com.np/use-phpmyadmin-with-nginx-and-php7/1374

이 문제를 해결하려면 nginx 기본 사이트에 다음 코드 블록을 추가해야합니다.

sudo nano /etc/nginx/sites-available/default

이 블록을 server블록에 배치하십시오.

# Phpmyadmin Configurations
    location /phpmyadmin {
       root /usr/share/;
       index index.php index.html index.htm;
       location ~ ^/phpmyadmin/(.+\.php)$ {
               try_files $uri =404;
               root /usr/share/;
               #fastcgi_pass 127.0.0.1:9000;
               #fastcgi_param HTTPS on; # <-- add this line
               fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
               fastcgi_index index.php;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               include fastcgi_params;
       }
       location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
               root /usr/share/;
       }
   }

   # Dealing with the uppercased letters
   location /phpMyAdmin {
       rewrite ^/* /phpmyadmin last;
   }

언젠가 누군가에게 도움이되기를 바랍니다 ...


문제가 해결되어 다행입니다. 행복한 코딩!
— 다니엘 알베스

이것은 바로 여기에 있습니다 ... 모든 문제를 해결 ...
— ThatTechGuy

확실히 하루 이상 저를 구했습니다. 투표했다!
— Xu Yin

나를 위해 고치지 않습니다. 다른 아이디어가 있습니까?
— Diana

phpmyadmin을 / phpmyadmin에서 대신 / whatever에서 원하지 않으면 어떻게합니까? 중첩 된 "위치"를 변경하려고 시도했지만 작동하지 않았습니다.
— 0lli.rocks

4

이 문제는 PHP-FPM의 현재 경로를 비활성화하는 cgi.fix_pathinfo = 0의 일반적인 구성으로 인해 발생합니다. 빠른 해결책 중 하나는 cgi.fix_pathinfo를 다시 1로 변경하거나 nginx의 가상 서버 블록에서 경로 매개 변수를 설정하는 것입니다.


2

당신은 문제가 이것과 비슷한 것 같습니다 : https : //.com/questions/1011101/nginx-location-directive-doesnt-seem-to-be-working-am-i-missing-something

그것을 읽고 설정을 변경해도 여전히 문제가 있다면 알려주십시오!


그 스레드를 읽고, 그리고 CONFIGS의 일부를 시도했지만 여전히 같은 문제 - 하나 대신에 / phpMyAdmin을 /로 리디렉션됩니다, 아니면 그냥 404 간다
— 프레데릭 닐슨를

404는 "try_files"에 의해 "생성"되는데, 이는 phpmyadmin 파일을 찾을 수 없음을 의미합니다. 아마도 phpmyamdin 설치에 문제가 있습니까?
— Mikec

다른 의견에 주목하십시오. -.- 결국 phpmyadmin 설정이라고 생각합니다!
— Mikec

아마 .. 나는 그것이 둘의 조합이라고 생각합니다.
— Frederik Nielsen


0

phpmyadmin1.com과 같은 도메인 이름으로 virtaul 호스트를 램프 서버에 추가하십시오.

server {
    #listen 80 default_server;
    #listen [::]:80 default_server ipv6only=on;

    root /var/www/phpmyadmin;
    #some /var/www/html/phpmyadmin
    index index.php index.html index.htm;

    server_name phpmyadmin1.com;

        location / {
        try_files $uri $uri/ /index.php?$args;
     }

    location ~ \.php$ {
        root           /usr/share/nginx/html;
        try_files $uri =404;
        fastcgi_pass   unix:/tmp/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

호스트 파일 편집

이 줄을 맨 아래에 추가하십시오

192.168.1.xx  phpmyadmin1.com

저장하고 닫은 다음 서버를 다시 시작하십시오.

service nginx restart

service php5-fpm restart

브라우저에서 가상 호스트 URL에 액세스하십시오. phpmyadmin 로그인 페이지를 참조하십시오.

http://screencloud.net/v/nGK5

http://screencloud.net/v/6M8r


서버 결함에 오신 것을 환영합니다! 질문과 답변 모두에서 임의 도메인 이름을 사용하거나 사용자의 사용을 자제 해보세요 자신의 도메인 또는 중 하나 RFC 6761 과 같은 예약 된 도메인 이름 example.com, example.org 또는 유사한. 질문 에서 어떻게 그리고 무엇을 혼란스럽게 할 것인지에 관한 권장 사항은 이 Q & A 를 참조하십시오 .
— HBruijn

0

이것 만이 나를 위해 일했다

location /utils/phpmyadmin/ {
    try_files $uri $uri/ =404;
    index index.php index.html index.htm
    proxy_set_header Proxy "";
}

-1

Ubuntu 16.04 이상의 리포지토리에서 phpMyAdmin이 올바르게 리디렉션되지 않습니다.

공식 phpmyadmin 사이트에서 phpmyadmin의 새 버전을 다운로드하고 있습니다.

sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.6.6/phpMyAdmin-4.6.6-all-languages.tar.gz

sudo tar xvf phpMyAdmin-4.6.6-all-languages.tar.gz

sudo mv phpMyAdmin-4.6.6-all-languages /usr/share/phpmyadmin

sudo rm -rf phpMyAdmin-4.6.6-all-languages.tar.gz

sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

config.inc.php를여십시오 :

sudo nano /usr/share/phpmyadmin/config.inc.php

그리고 임의의 문자 berween '

$cfg['blowfish_secret'] = 'i\kywQ>_h4L~S-Pt2rS'VAe)QpED7JI#';

브라우저에서 도메인 / phpmyadmin을 저장하고 엽니 다

또한 보안 강화를 위해 phpmyadmin으로의 링크를 변경하고 nginx에서 기본 인증을 추가하여 링크 할 수 있습니다.

sudo ln -s /usr/share/phpmyadmin /var/www/html

cd /var/www/html

sudo mv phpmyadmin anything

이제 phpmyadmin이 https : // domain / anything 에서 작동하므로 암호를 추가 할 수 있습니다.

sudo sh -c "echo -n 'YourNameForLoginThere:' >> /etc/nginx/pmapass"
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/pmapass"

이제 nginx 설정을 열고 (기본 : sudo nano / etc / nginx / sites-available / default ) 마지막에 추가하십시오}

location /anything {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/pmapass;
}

구성 저장소 활성화 :

sudo nano /usr/share/phpmyadmin/config.inc.php

다음 줄을 찾으십시오.

// $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';

로 변경:

$cfg['Servers'][$i]['controluser'] = 'yourdatabaseuser';
$cfg['Servers'][$i]['controlpass'] = 'yourdatabasepassword';

위치하고 있다:

// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma__relation';
// $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
// $cfg['Servers'][$i]['history'] = 'pma__history';
// $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
// $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
// $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
// $cfg['Servers'][$i]['recent'] = 'pma__recent';
// $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
// $cfg['Servers'][$i]['users'] = 'pma__users';
// $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
// $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
// $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
// $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
// $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
// $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

주석 처리를 제거하십시오 (// 제거 ).

이제 저장하고 종료하십시오.

mysql로 ​​이동하십시오 (기본적으로 sudo mysql -u root -p )

GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'yourdatabaseuser'@'localhost' IDENTIFIED BY 'yourdatabasepassword';
exit;

이제 브라우저에서 도메인 / 무엇이든 열어보십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.