在Debian 7下禁止使用nginx 403

我在Debian 7的笔记本电脑上遇到了一个403禁止的错误

文件权限是775:chmod 775 -R / var / www

nginx错误日志显示:

2013/07/05 16:27:06 [error] 7351#0:* 12禁止“/ var / www / install /”的目录索引,客户端:127.0.0.1,server:localhost,请求:“GET / install / HTTP / 1.1“,主机:”localhost“

phpinfo工作正常

在此我的configuration:

1,/etc/nginx/nginx.conf

用户www-data;

worker_processes 1;

pid /var/run/nginx.pid;

事件{worker_connections 768; #multi_accept on; }

http {

## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } 

2,/ etc / nginx / sites-enabled / default

服务器{听80; ##听ipv4; 这一行是默认的,默认的#listen [::]:80 default_server ipv6only = on; ##监听ipv6

 #root /usr/share/nginx/www; root /var/www; index index.html index.php; # Make site accessible from http://localhost/ server_name localhost; server_name_in_redirect off; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. # try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.php?$args; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; allow ::1; deny all; } # Rewrite for Fork CMS 

位置〜^ /(后台|安装| api(/ \ d。\ d)?(/ client)?)。*。php $ {#backend / install / api是现有的dirs,但是都应该通过前面的try_files $ uri $ uri / /index.php?args; }

位置〜^(。+。php)(。*)$ {include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; }

 # gzip 

gzip on;
gzip_disable“MSIE [1-6]。(?!。* SV1)”; #禁用不支持它的浏览器的gzip压缩(在这种情况下,版本6 SV1之前的MS Internet Explorer)。 gzip_http_version 1.1; gzip_vary在; #设置响应头Vary:Accept-Encoding。 一些代理服务器存在一个错误,那就是它们将压缩的内容提供给不支持它的浏览器。 通过设置Vary:Accept-Encoding标头,可以指示代理存储内容的压缩版本和未压缩版本。 gzip_comp_level 6; gzip_proxied任何; gzip_types text / plain text / css application / json application / x-javascript text / xml application / xml application / xml + rss text / javascript application / javascript text / x-js; gzip_buffers 16 8k;

 # client caching location ~ \.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|woff|wri|xla|xls|xlsx|xlt|xlw|zip)$ { expires 31d; add_header Pragma "public"; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } # End of Fork 

你的问题是, http://localhost/install按照$uri/try_files的第二条规则传递,所以它试图访问install作为一个文件夹,但是你没有启用autoindex ,所以它会失败并带有禁止的错误。

 try_files $uri $uri/ /index.php?$args; 

我建议删除$uri/ part。

 try_files $uri /index.php?$args; 

我在一个VPS上设置了运行在nginx上的WordPress,并不断得到一个403禁止的错误。 权限都设置正确,一切看起来不错,但仍然保持403。

出于某种原因,每个人都建议使用这一行:

 try_files $uri $uri/ /index.php?$args; 

当我按照上面的MASHARD建议,并删除了$uri/ ,所以在我的服务器块中看起来像这样:

 try_files $uri /index.php?$args; 

…令人惊讶的是,配置工作!

真的很棒!

非常感谢!