nginx + 乘客 + phpmyadmin = 拒绝访问
Posted
技术标签:
【中文标题】nginx + 乘客 + phpmyadmin = 拒绝访问【英文标题】:nginx + passenger + phpmyadmin = Access denied 【发布时间】:2014-02-08 05:50:21 【问题描述】:我很困惑,我阅读了很多信息,但是当我调用 ../phpmyadmin/index.php 时仍然得到同样的错误
Access denied.
我的 nginx 配置文件:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events
worker_connections 1024;
http
passenger_root /usr/local/rvm/gems/ruby-1.9.3-p484/gems/passenger-4.0.35;
passenger_ruby /usr/local/rvm/gems/ruby-1.9.3-p484/wrappers/ruby;
client_max_body_size 150m;
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server
listen 80;
server_name localhost;
location /
alias /home/prog/someapp/public;
passenger_enabled on;
rails_spawn_method smart;
rails_env production;
location /phpmyadmin/
alias /var/www/html/phpMyAdmin/;
passenger_enabled off;
index index.php;
location /mail/
alias /var/www/html/roundcube/;
passenger_enabled off;
index index.php;
#charset koi8-r;
#access_log logs/host.access.log main;
#location /
# root html;
# index index.html index.htm;
#
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html
# root html;
#
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$
#aliassxy_pass http://127.0.0.1;
#
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$
alias html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;# scripts$fastcgi_script_name;
include fastcgi_params;
#location ~ .php$ alias html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params;
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht
# deny all;
#
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location /
# root html;
# index index.html index.htm;
#
#
# HTTPS server
#
#server
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location /
# root html;
# index index.html index.htm;
#
#
在
/etc/php5/fpm/pool.d/www.conf
我加了
limit_extensions = .php .php3 .php4 .php5 .html
.html 工作很棒,但 php 什么都没有
我也尝试在 php.ini 中设置为 1 cgi.fix_pathinfo 并且什么都没有(
我做错了什么?
部分日志:
2014/01/19 19:25:01 [错误] 5354#0: *11 FastCGI 在标准错误中发送:“访问脚本'/opt/nginx/html'已被拒绝(请参阅security.limit_extensions)”从上游读取响应头时,客户端:*,服务器:localhost,请求:“GET /phpmyadmin/index.php HTTP/1.1”,上游:“fastcgi://127.0.0.1:9000”,主持人:“”
【问题讨论】:
谁这么好笑,投票赞成?没有人知道解决方案,我尝试所有可能的/.. 本题不涉及任何编程,属于超级用户或服务器故障。 @DanFromGermany 我没有得到任何答案.... 【参考方案1】:问题是,您在位置块中定义了别名。
但您可能会做的是,为您的位置定义根路径...
尝试从“别名 /var/www/html/phpMyAdmin/;”切换到“root /var/www/html/phpMyAdmin/;”
您可以使用 root 指令! 在服务器块或位置块上。
您也可以为整个 http 块定义 index 指令。
http
index index.php index.htm index.html;
server
server_name www.domain.com;
root /var/www/html;
location /phpmyadmin
[..]
【讨论】:
使用多根是不好的!之后我得到 404 将 root 放入 location 块内会起作用,而且完全有效。看看你的源代码,没有定义一个根......甚至没有服务器。您可以为服务器定义一个,然后删除位置上的根以获得良好实践。 我添加了一个例子 所以我不需要在位置写任何别名或根目录? 不是,如果您的服务器块中有根目录,因为位置是相对于该根目录构建的。(路径为“/var/www/html”+“/phpmyadmin”)您可能会采取看看wiki.nginx.org/Pitfalls#Root_inside_Location_Block。这也是报错的原因,因为nginx使用默认路径:“/opt/nginx/html”以上是关于nginx + 乘客 + phpmyadmin = 拒绝访问的主要内容,如果未能解决你的问题,请参考以下文章
可以在不重启的情况下使用 nginx 乘客登录 rails 应用程序吗?
Websockets 与主要应用程序(nginx + 乘客 + faye)