我刚刚安装了nginx,php-fpm和phpmyadmin。 这是我的www文件夹。
[root@vmi67073 etc]# ll /usr/share/nginx/html/
-rw-r--r-- 1 root root 3650 Feb 13 18:45 404.html
-rw-r--r-- 1 root root 3693 Feb 13 18:45 50x.html
drwxr-xr-x 3 root root 40 Mar 17 06:14 myapp.eu
-rw-r--r-- 1 root root 3700 Feb 13 18:45 index.html
lrwxrwxrwx 1 root root 22 Mar 17 06:52 mysql -> /usr/share/phpMyAdmin/
我在myapp.conf文件下的phpmyadmin的nginx conf文件位置如下所示
location /mysql {
alias /usr/share/phpMyAdmin;
location ~ \.php$ {
index index.php index.html index.htm;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
}
}
问题:
如果我尝试访问myapp.eu/mysql
我在nginx日志中出现以下错误
2016/03/17 09:21:01 [error] 2119#0: *28 directory index of "/usr/share/phpMyAdmin/" is forbidden, client: 84.52.168.135, server: euro-swap.eu, request: "GET /mysql/ HTTP/1.1", host: "euro-swap.eu"
但如果我尝试访问myapp.eu/mysql/index.php
,则会显示phpmyadmin。所以我猜测nginx应该以某种方式重定向到index.php页面。
是什么导致了这个问题?怎么解决?如果您需要任何其他信息,请告诉我,我会提供。
答案 0 :(得分:2)
当您尝试打开myapp.eu/mysql
时,它会被外部location
指令捕获。但没有为外部定义的索引。所以解决方案是从内部location
移动索引指令:
location /mysql {
alias /usr/share/phpMyAdmin;
index index.php index.html index.htm;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
}
}
答案 1 :(得分:1)
问题出在第二个位置。 location ~ \.php$
匹配以.php
结尾的路径,而您的路径不是:/mysql
。尝试删除它。
location /mysql {
alias /usr/share/phpMyAdmin;
index index.php index.html index.htm;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
}
答案 2 :(得分:1)
这是我在子域上运行phpmyadmin的解决方案。
另外,下次我遇到此问题时,我知道我可以复制/粘贴自己的解决方案:)
server {
listen 80;
server_name secret-sql-subdomain.site.com;
root /usr/share/phpMyAdmin;
location / {
fastcgi_pass php-fpm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}