随笔小杂记(五)——nginx访问静态资源报错403
闲聊
摸了半个月,总算把博客搭建完了。前两天搭建自己博客的时候,在实际部署的时候,网页倒是能显示出来,但是静态资源一直有问题,最开始以为是nginx配置的问题,后面用浏览器审查了一下文件,发现不是找不到,而是:
403 Forbidden
问题
通常出现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;