nginx访问页面报403的问题

一、问题引入

使用nginx代理的页面,部署好后,打开报403

二、解决办法

排查nginx相关配置与映射,均无问题。网上搜索后,发现问题在于权限的问题,主要是页面文件所在的文件夹的访问
权限。由于nginx默认使用的用户权限无法访问页面的文件,导致报的403。大致情况说明如下

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

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

第一点,在conf中增加静态资源location映射配置

vi {nginx}/conf/nginx.conf

添加一下静态资源的路径(示意,其他勿删)

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

2.nginx没有访问目录的权限

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

chmod -R 777 *

3.给予其当前目录访问权限

由于启动用户和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;

网上还看到其他问题,由于nginx权限导致(记录如下)

某些系统响应很慢,界面要刷新很久才出得来。查后台也没有报什么错,系统是用nginx做负载均衡。惯性地不走负载均衡而直接访问单节点应用,发现响应很快,很正常。初步定位问题出在nginx上,然后查nginx日志,发现有很多错误,错误中有“13: Permission denied”这个信息,是权限问题。

原因:在linux上有些应用程序的一些进程会默认使用nobody这个用户来启动,以保安全。nginx有两种进程,除主进程之外的工作进程都 是用nobody这个用户启动的(nginx工作进程的数量使用worker_processes这个参数来设定)。而工作进程要访问nginx下这两个 目录client_body_temp和proxy_temp(这两个目录按我的理解是缓存一些静态文件,比如图片或者css文件什么的,以提高 nginx访问速度),权限变更后,造成工作进程访问不了这两个目录下的内容,造成某些图片和连接打不开,就像响应很慢一样。将权限变更一下就行。

参考:https://blog.csdn.net/InkBamboo920/article/details/124241030

 

posted @ 2025-04-27 10:48  盼星星盼太阳  阅读(906)  评论(0)    收藏  举报