我有3个域名,我正在尝试使用Nginx在一台服务器(数字海洋液滴)上托管所有3个站点 .
mysite1.name mysite2.name mysite3.name
其中只有一个有效 . 另外两个导致403错误(以相同的方式) .
在我的nginx错误日志中,我看到: [error] 13108#0: *1 directory index of "/usr/share/nginx/mysite2.name/live/" is forbidden
.
我的网站启用配置是:
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;
}
}
所有3个站点都有几乎相同的配置文件 .
每个站点的文件都在/usr/share/nginx/mysite1.name/someFolder等文件夹中,然后/usr/share/nginx/mysite1.name/live是一个符号链接 . (与mysite2和mysite3相同 . )
我看了Nginx 403 forbidden for all files但这没有帮助 .
关于可能出错的任何想法?
15 回答
如果您关闭了目录索引,并且遇到此问题,可能是因为您使用的try_files有一个目录选项:
删除它,它应该工作:
从我所看到的,这是因为nginx将尝试索引目录,并被自己阻止 . 抛出OP提到的错误 .
这是有效的配置:
然后浏览器中唯一的输出是Laravel错误:“糟糕,看起来出了问题 . ”
不要运行
chmod -R 777 app/storage
(note) . 使世界可写的东西是安全性差的 .chmod -R 755 app/storage
有效且更安全 .如果您只是尝试列出目录内容,请使用
autoindex on;
,如:我遇到了类似的错误
--- "403 Forbidden"在网页上
--- "13: Permission denied"在/var/log/nginx/error.log的错误日志中
以下3个步骤对我有用:
1:打开终端,看到如下所示的内容
所以,我的用户名是“user1”(从上面)
2:在/etc/nginx/nginx.conf中更改了用户
3:重装上了nginx
另外,我已经应用了文件/文件夹权限(在我执行上述3个步骤之前)
(755到我的目录,比如/ dir1 /)&(644用于该目录下的文件):
(I am not sure, if this additional step is really required, just above 3 steps might be enough):
希望这可以帮助快速的人 . 祝你好运 .
我有同样的问题,日志文件显示我这个错误:
我正在托管一个带有codeignitor框架的PHP应用程序 . 当我想查看上传的文件时,我收到了
403 Error
.问题是,
nginx.conf
没有正确定义 . 代替我只包括在内
我的root中有一个index.php,我认为这就够了,我错了;)提示给了我NginxLibrary
如果您只是尝试列出目录内容,请使用
autoindex on;
,如:事实上,您需要检查几件事 . 1.检查你的nginx的运行状态
在这里,我们需要检查谁正在运行nginx . 请记住用户和组
ls -alt
(1)如果文件夹的访问状态不正确
(2)如果文件夹的用户和组与nginx的运行不同
并更改nginx的运行用户名和组
找到nginx配置文件的位置
因为nginx默认运行的用户是nobody而group是nobody . 如果我们没有注意到这个用户和组,将引入403 .
你可能因为Nginx策略(例如“deny”)而得到这个,或者你可能因为Nginx配置错误而得到这个,或者你可能因文件系统限制而得到这个 .
您可以确定它是否是后者(并且可能通过使用strace看到错误配置的证据(除了OP将无法访问它):
在这里我正在检查nginx在运行测试时完成的文件系统活动(我和你有同样的错误) .
这是我当时配置的一部分
在我的情况下,正如strace非常清楚地表明的那样,“别名”与“索引”的加入并不是我所期望的,似乎我需要养成总是用/附加目录名的习惯,所以在我的情况下,以下工作:
因为您正在使用
php-fpm
,所以应确保php-fpm
user与nginx
user相同 .检查
/etc/php-fpm.d/www.conf
并将php用户和组设置为nginx
(如果不是) .php-fpm
用户需要写入权限 .它看起来像是一些权限问题 .
尝试将您在mysite1中所做的所有权限设置为其他网站 .
默认情况下,文件权限应为644和dirs 755.另请检查运行nginx的用户是否具有读取权限文件和目录 .
更改
try_files
指向index.php
路径,在您提到的"Laravel"中它应该是这样的在“codeigniter”项目中尝试这样
您需要对静态文件目录具有执行权限 . 它们也需要由你的nginx用户和组来完成 .
更改默认值
至
解决了我的问题 .
我正在运行Ubuntu 15.10并且由于一个简单的原因遇到了403 Forbidden错误 . 在nginx.conf(nginx的配置文件)中,用户是'www-data' . 一旦我将用户名更改为[我的用户名],假设我的用户名具有必要的权限,它就可以正常工作 . 我跟着的步骤:
我的配置文件如下所示:
对我来说问题是除了基本路线以外的任何路线都在工作,添加这一行修复了我的问题:
完整的东西: