在 Ubuntu 16.04 上的 Nginx 中设置 phpmyadmin 和反向代理后无法获取 /phpmyadmin

Posted

技术标签:

【中文标题】在 Ubuntu 16.04 上的 Nginx 中设置 phpmyadmin 和反向代理后无法获取 /phpmyadmin【英文标题】:Cannot GET /phpmyadmin after setting up phpmyadmin and reverse proxy in Nginx on Ubuntu 16.04 【发布时间】:2019-01-23 19:34:08 【问题描述】:

我遵循了 Digital Ocean 的关于设置 nginxphp 和 phpmyadmin 的教程。

https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-nginx-on-ubuntu-16-04

但是我仍然无法使用我设置的地址(my-ip-address/phpmyadmin)访问phpmyadmin。

我为在 localhost:8010 上侦听的 node.js 应用程序设置了反向代理。

这是 /etc/nginx/sites-available/default 文件中的设置:

server 
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.php index.html index.htm index.nginx-debian.html;
    server_name "my ip address";

    location / 
        proxy_pass http://localhost:8010/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    

    location ~ \.php$ 
       include snippets/fastcgi-php.conf;
       fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
    

    location ~ /\.ht 
            deny all;
         

【问题讨论】:

fastcgi 正在运行吗? @ErvalhouS 是的,我使用 'sudo nano /var/www/html/info.php' 创建了一个 info.php 文件并编写了 .然后我可以使用地址“my-ip-address/info.php”访问我服务器上的 php 信息 【参考方案1】:

您正在使用此块将所有请求代理到http://localhost:8010:

location / 
    proxy_pass http://localhost:8010/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;

没有一个请求可以到达 phpmyadmin。尝试将此块注释掉或删除它,它应该可以按预期工作。

【讨论】:

我为监听 localhost:8010 的 node.js 应用设置了反向代理。我应该改变它吗? 哦,在这种情况下,您只需要添加一个新的location /phpmyadmin 块,其中root 指向您的phpmyadmin 安装。从现在开始,默认情况下所有请求都会发送到您的 node.js 应用程序。 谢谢。我已经添加了 phpmyadmin 块并且它可以工作。【参考方案2】:

您需要专门为您的location /phpmyadmin 设置一个块。由于您已经设置了一个规则,仅当显式扩展名是 location ~ \.php$ 块上的 .php 时才重定向到您的 fastCGI,所以 /phpmyadmin 位置将作为对您的代理应用程序的请求进行处理。你必须添加这个:

location /phpmyadmin 
   root /path/to/phpmyadmin;
   include snippets/fastcgi-php.conf;
   fastcgi_pass unix:/run/php/php7.0-fpm.sock; 

【讨论】:

感谢您的回答。【参考方案3】:

我添加了以下代码来访问 phpmyadmin:

  location /phpmyadmin 
     root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;


【讨论】:

以上是关于在 Ubuntu 16.04 上的 Nginx 中设置 phpmyadmin 和反向代理后无法获取 /phpmyadmin的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu16.04安装Nginx

Laravel 5.3 在 ubuntu16.04 nginx 中使用命令 composer install --no-dev 上传

Ubuntu16.04 nginx+uwsgi二级目录

Ubuntu 16.04、nginx、phpmyadmin - 502 错误网关

ubuntu 16.04 nginx 更改 phpmyadmin url 不起作用

Django,Nginx,Gunicorn。 Ubuntu 16.04 错误