我用yum源下载了最新版本的nginx,并用浏览器访问成功了80端口,但是我在里面添加了另一站点并配置81端口,访问文件地址也改成了我创建的一个文件这里没问题,然后重启成功,我用浏览器访问81端口里面我命名为p1.png的文件,但是出现了403,这是为什么啊,我防火墙关掉了,是不是权限问题,可是那个80端口还可以访问啊,我把图片放去80端口那个文件目录下都可以加载出来没什么问题。
2条回答 默认 最新
关注引自免费微信小程序:皆我百晓生
看起来你遇到了一个常见的Nginx权限问题。当Nginx尝试访问某个文件时返回403错误(Forbidden),通常是因为Nginx运行的用户(通常是
nobody或www-data)没有足够的权限读取该文件或其所在的目录。由于80端口的站点可以正常访问,我们可以推测可能的原因是新站点的目录或文件权限设置不同。首先,让我们检查一下Nginx运行用户的用户名。在大多数Linux系统中,Nginx默认使用
www-data用户运行,但具体取决于你的系统配置。你可以通过查看Nginx主配置文件确定这一点。在 CentOS/RHEL 系统上,这个文件位于/etc/nginx/nginx.conf,而在 Ubuntu/Debian 系统上,它通常位于/etc/nginx/sites-available/default或/etc/nginx/sites-enabled/default。接下来,我们执行以下步骤来解决这个问题:
- 找到你的新站点配置文件,例如:
/etc/nginx/conf.d/mysite.conf。 - 确定新站点的根目录,例如:
root /var/www/html/mysite; - 使用命令行切换到该目录:
sudo su - cd /var/www/html/mysite - 检查当前的文件和目录权限:
ls -l - 如果发现Nginx用户(如
www-data)没有读取权限,你需要修改权限。将所有者更改为Nginx用户,并赋予适当的权限:chown -R www-data:www-data . find . -type f -exec chmod 644 {} \; find . -type d -exec chmod 755 {} \;
这些命令会将当前目录及其内容的所有权更改为你系统的Nginx用户,并为所有文件设置可读、可执行权限,对所有目录设置可读、可写、可执行权限。确保替换
www-data为你的系统中实际的Nginx用户。- 重启Nginx服务以应用新的权限更改:
systemctl restart nginx
完成上述操作后,你应该能够通过
http://yourdomain.com:81/p1.png访问到你的图片了。如果你还是遇到问题,可能需要检查Nginx配置文件中的location块是否正确指向了图片文件。确保配置类似于这样:server { listen 81; server_name yourdomain.com; root /var/www/html/mysite; index index.html index.htm index.php; location / { try_files $uri $uri/ =404; } location ~* \.(jpg|jpeg|png|gif|ico)$ { expires max; access_log off; } }这段配置允许Nginx服务器处理静态图像请求。确保将
yourdomain.com替换为你的域名或IP地址,以及调整root和location块以匹配你的实际路径。如果问题依然存在,请提供详细的Nginx配置文件部分,以便我能进一步分析。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录- 找到你的新站点配置文件,例如: