【问题标题】:Nginx + phpMyAdmin IssuesNginx + phpMyAdmin 问题
【发布时间】:2014-08-25 07:45:16
【问题描述】:

我的 Nginx 配置文件有问题。当我加载 phpMyAdmin 时,一切正常 - 除了图像无法加载。

检查错误日志,我看到所有对图像/其他静态内容的请求都在请求的末尾添加了“/index.php”。

如果有人能告诉我我做错了什么,我将不胜感激。

错误日志:

2014/07/03 20:17:32 [error] 75683#0: *61 "/local/www/phpMyAdmin/themes/original/img/ajax_clock_small.gif/index.php" is not found
2014/07/03 20:17:33 [error] 75683#0: *59 "/local/www/phpMyAdmin/themes/original/jquery/jquery-ui-1.9.2.custom.css/index.php" is not found
2014/07/03 20:17:33 [error] 75683#0: *61 "/local/www/phpMyAdmin/themes/original/img/logo_left.png/index.php" is not found
2014/07/03 20:17:33 [error] 75683#0: *58 "/local/www/phpMyAdmin/themes/original/img/ajax_clock_small.gif/index.php" is not found

Nginx 配置:

server {

    listen  XX.XX.XX.XXX:443;

    ssl on;
    ssl_certificate        /etc/ssl/cert/example.com/example.com.crt; 
    ssl_certificate_key    /etc/ssl/cert/example.com/example.com.key;

    server_name     example.com;
    access_log      off;
    error_log       /var/log/nginx/example_error.log;

    root            /opt/www/example.com/httpdocs;
    index           index.php index.html;

    charset UTF-8;

    try_files $uri $uri/ @backend;

    location  /phpmyadm/ {
       alias               /local/www/phpMyAdmin/;
    }

    location ~* ^/phpmyadm/(.+\.(jpg|jpeg|gif|png|bmp|ico|pdf|flv|swf|html|htm|txt|css|js))$ {
       alias              /local/www/phpMyAdmin/;
       expires            365d;
       etag               on;
    }

    # Pass off php requests to Apache
    location ~* \.php {
       include            /etc/nginx/proxypass.conf;
       proxy_pass         http://127.0.0.1:80;
    }

    location @backend {
       include            /etc/nginx/proxypass.conf;
       proxy_pass         http://127.0.0.1:80;
    }
}

【问题讨论】:

  • 我在这里遇到了同样的问题。你最近有遇到什么修复吗?

标签: nginx phpmyadmin


【解决方案1】:

为 php 和本示例中的资产创建类似 /phpmyadmin_secure 的位置

#### PHPMYADMIN
    location /phpmyadmin_secure {
        index index.php;
        location ~ ^/phpmyadmin_secure/(.+\.php)$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include /etc/nginx/fastcgi_params;
        }
        location ~ \.(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                root    /usr/share/phpmyadmin;
         }
    }
####

【讨论】:

    【解决方案2】:

    使用alias 代替root 并避免使用try_files 对我来说效果很好:

    location ^~ /secure_phpmyadmin {
        alias /usr/share/phpmyadmin;
        index index.php index.html index.htm;
    
        if (!-e $request_filename) { rewrite ^ /secure_phpmyadmin/index.php last; }
    
        location ~ \.php$ {
    
            if (!-f $request_filename) { return 404; }
    
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $request_filename;
        }
    }
    

    由于this issue,请避免使用aliastry_files。关于if的使用见this caution

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      • 2012-03-12
      • 2014-10-22
      • 1970-01-01
      • 2018-05-25
      相关资源
      最近更新 更多