我有3个域名,并试图使用Nginx在一台服务器上托管所有3个网站(一个数字海洋液滴)。

mysite1.name mysite2.name mysite3.name

只有1个有效。另外两个结果是403个错误(以同样的方式)。

在我的nginx错误日志中,我看到:[error] 13108#0: *1目录索引“/usr/share/nginx/mysite2.name/live/”被禁止。

我的站点启用配置是:

server {
        server_name www.mysite2.name;
        return 301 $scheme://mysite2.name$request_uri;
}
server {
        server_name     mysite2.name;

        root /usr/share/nginx/mysite2.name/live/;
        index index.html index.htm index.php;

        location / {
                try_files $uri $uri/ /index.html index.php;
        }

        location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
}

这三个站点都有几乎相同的配置文件。

每个站点的文件都在/usr/share/nginx/mysite1.name/someFolder这样的文件夹中,然后/usr/share/nginx/mysite1.name/live是指向该文件夹的符号链接。(mysite2和mysite3也是如此。)

我已经查看了Nginx 403禁止所有文件,但这没有帮助。

有什么问题吗?


当前回答

我有同样的问题,日志文件显示我这个错误:

2016/03/30 14:35:51 [error] 11915#0: *3 directory index of "path_scripts/viewerjs/" is forbidden, client: IP.IP.IP.IP,     server: domain.com, request: "GET /scripts/viewerjs/ HTTP/1.1", host: "domain", referrer: "domain.com/new_project/do_update"

我正在使用codeignitor框架托管一个PHP应用程序。当我想查看上传的文件时,我收到了一个403错误。

问题是,nginx.conf没有正确定义。而不是

index index.html index.htm index.php

我只包括了

index index.php

我有一个index.php在我的根,我认为这就足够了,我错了;) 提示给了我NginxLibrary

其他回答

我也遇到过类似的错误 ——网页中的“403禁止” ——错误日志/var/log/nginx/error.log中的"13:Permission denied

以下3个步骤对我很有效:

1:开放式终端,看到如下内容

user1@comp1:/home/www/

因此,我的用户名是“user1”(从上面)

2:修改/etc/nginx/nginx.conf中的user

# user www-data;
user user1;

3:重新加载nginx

sudo nginx -s reload  

此外,我已经应用了文件/文件夹权限(在我做以上3步之前) (755到我的目录,说/dir1/) &(644下的文件目录): (我不确定,如果真的需要这个额外的步骤,3步以上可能就足够了):

chmod 755 ./dir1/
chmod 644 ./dir1/*.*

希望这能帮助到一些人。祝你好运。

在我的情况下,我使用hhvm监听端口9000和nginx配置中的fastcgi_pass行是不正确的。

此外,如果你正在使用mysql,从hhvm到数据库的连接不工作,检查是否安装了apparmor。

看起来像是权限问题。

尝试像在mysite1中那样设置其他站点的所有权限。

默认情况下,文件权限应该是644和dirs 755。 还要检查运行nginx的用户是否有权限读取这些文件和dirs。

当你想保留目录选项时,你可以像这样把index.php放在$uri前面。

try_files /index.php $uri $uri/
location ~* \.php$ {
    ...
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;    
}

改变默认的

fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

to

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

解决了我的问题。