随笔小杂记(五)——nginx访问静态资源报错403

闲聊

摸了半个月,总算把博客搭建完了。前两天搭建自己博客的时候,在实际部署的时候,网页倒是能显示出来,但是静态资源一直有问题,最开始以为是nginx配置的问题,后面用浏览器审查了一下文件,发现不是找不到,而是:

403 Forbidden

nginx服务器无法访问前端项目文件 nginx无法访问静态资源_nginx服务器无法访问前端项目文件

问题

通常出现403是访问被拒绝,nginx访问静态资源报错主要有三种原因:

  • nginx的目录里面没有默认文档,并且没有列出目录的权限
  • nginx没有访问目录的权限
  • 由于启动用户和nginx工作用户不一致所致

大家可以挨着检查一下问题出现在哪一步。

解决方法

nginx的目录里面没有默认文档,并且没有列出目录的权限

部分nginx打开格式:

vi {nginx}/conf/nginx.conf

添加一下静态资源的路径,把下面地址换一下添加到nginx的配置文档里面应该就可以解决了

#静态资源路径
      location /static/ {
      alias /www/wwwroot/www.django.cn/static/; 
      }

注意:这里只是添加了静态资源的路径,详细的配置路径还是需要大家参考规范的格式,别都删了

nginx没有访问目录的权限

进入到你网站所在的目录,执行以下代码

chmod -R 777 *

给予其当前目录访问权限

由于启动用户和nginx工作用户不一致所致

这个就是我当时遇到的问题了,当时之前检查了前面两项,发现还是不行。看了nginx报错也不行,后面才注意到这条。

这个就是由于nginx中通常会默认user为wwwuser wwww,而你在实际后台登录时,通常是作为管理员root(部分云的管理员用户不一样,比如腾讯云就是ubuntu)用户登录,而产生了启动用户和nginx工作用户不一致,导致权限问题。

解决方法:将nginx.config的user改为和启动用户一致

#改成你管理员用户的用户名,或者你启动用户的用户名
user  root;
worker_processes auto;
error_log  /www/wwwlogs/nginx_error.log  crit;
pid        /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;