使用 nginx(Fedora 17)配置 phpMyAdmin 以便在 localhost/phpmyadmin 上访问

使用 nginx(Fedora 17)配置 phpMyAdmin 以便在 localhost/phpmyadmin 上访问

[尝试了 Stackoverflow 上的所有答案,并在 Google 上进行了大量搜索,但没有任何配置起作用。]

我已经按照 DigitalOcean 上的指南在 Fedora 上安装了 LEMP 服务器(https://www.digitalocean.com/community/articles/how-to-install-linux-nginx-mysql-php-lemp-stack-on-centos-6).将nginx的default.conf中的example.com替换为localhost。

然后,我使用这个安装了 phpMyAdmin(https://www.digitalocean.com/community/articles/how-to-install-phpmyadmin-on-a-lemp-server)。

nginx web 目录是/usr/共享/nginx/html。我为 phpmyadmin 创建了一个符号链接。它位于在/usr/share/nginx/html/phpMyAdmin

目前,我只需要本地主机访问(本地主机/phpmyadmin)。我可以访问localhost和localhost/info.php。

我尝试了很多配置,下面是其中之一:Nginx location 指令似乎不起作用。我遗漏了什么吗?

但它不起作用。有时我会收到“未指定输入文件。”有时还会收到 404 未找到。我希望在本地主机/phpmyadmin

编辑:我的 default.conf 文件。浏览器中出现“未指定输入文件。”错误。

#
# The default server
#
server {
    #listen       80 default_server;
    listen  80;
    server_name localhost;
    #server_name  _;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

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

    location /phpmyadmin {
        alias /usr/share/nginx/html/phpMyAdmin;
        index index.php index.html index.htm;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /usr/share/nginx/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 ~ /phpMyAdmin/.*\.php$ {
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME /usr/share/nginx/html/$uri;
        include     fastcgi_params;
    }

    location ~ \.php$ {
        root           /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        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;
    #}
}

谢谢。

答案1

对于您的404,您应该使字符大小写匹配全部phpmyadmin(全部小写)或phpMyAdmin

为了使配置更清晰(我的观点),您可以使用嵌套的location

location /phpmyadmin/ {
    index index.php index.html index.htm;

    location ~ \.php$ {
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME /usr/share/nginx/html/$uri;
        include     fastcgi_params;
    }
}

然后你必须phpMyAdmin在你的 webroot 中重新链接(注意缺少的alias指令):

unlink /usr/share/nginx/html/phpMyAdmin
ln -s /usr/share/phpMyAdmin /usr/share/nginx/html/phpmyadmin


或者,为了保持大小写混合链接,请将这一行添加到上面location /phpmyadmin以内部更改$uri(查找文件所需):

rewrite ^/phpmyadmin(.*)$ /phpMyAdmin$1;


要修复此问题500,您可能需要查看SF 上关于 PHP 限制的另一个答案。我刚刚意识到在 webroot 之外执行 PHP 脚本可以触发安全机制。
那将是一个 PHP 错误,意味着location匹配。

相关内容