[尝试了 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
匹配。