我一个同事把nginx安装在root用户下了,结果导致我用IP访问正常,域名访问会出现数据不全的问题,还有一个现象是上传图片二进制流也会报这个错误,在网上查了好久终于查到原因了:
具体来说,是nginx工作机制的问题, 如果报下面的错误:
*105761 open() "/root/server/nginx/fastcgi_temp/3/02/0000000023" failed (13: Permission denied) while reading upstream, client: 172.20.146.204, server: localhost, request: "GET /admin/category/list?nav=3 HTTP/1.0", upstream: "
看起来是权限问题,要完全的解决这个问题,先要搞清楚 fastcgi_temp 目录的作用。
先简单的说一下 Nginx 的 buffer 机制,对于来自 FastCGI Server 的 Response,Nginx 将其缓冲到内存中,然后依次发送到客户端浏览器。缓冲区的大小由 fastcgi_buffers 和 fastcgi_buffer_size 两个值控制。
比如如下配置:
fastcgi_buffers 8 4K;
fastcgi_buffer_size 4K;
fastcgi_buffers 控制 nginx 最多创建 8 个大小为 4K 的缓冲区,而 fastcgi_buffer_size 则是处理 Response 时第一个缓冲区的大小,不包含在前者中。所以总计能创建的最大内存缓冲区大小是 8*4K+4K = 36k。而这些缓冲区是根据实际的 Response 大小动态生成的,并不是一次性创建的。比如一个 8K 的页面,Nginx 会创建 2*4K 共 2 个 buffers。
当 Response 小于等于 36k 时,所有数据当然全部在内存中处理。如果 Response 大于 36k 呢?fastcgi_temp 的作用就在于此。多出来的数据会被临时写入到文件中,放在这个目录下面。
显然,缓冲区设置的太小的话,Nginx 会频繁读写硬盘,对性能有很大的影响,但也不是越大越好,没意义,呵呵!
网上给的解决办法是:粗暴的删掉 fastcgi_temp 目录或者温柔的 chown + chmod 都可以解决问题
,但是我都试过了,都不行,最后才发现是我nginx启动的问题
首先停止nginx,如
sbin/nginx -s stop
给nginx root启动
chown -R root nginx
重新启动nginx,就可以了
这个只是对于安装在root用户下的,安装在其它用户目录下的,也要用相应的用户启动
分享到:
相关推荐
在非root权限下安装Nginx,即不使用管理员权限进行安装,需要一些额外的步骤和技巧。下面将详细介绍这个过程。 首先,由于在非root环境下安装软件会受到权限限制,因此我们需要确保我们有足够的权限来创建目录、...
在这种情况下,了解如何使用非root用户安装和配置Nginx(包括OpenResty)就显得尤为重要。 #### 二、Nginx简介 Nginx是一款高性能的HTTP服务器和反向代理服务器,常用于负载均衡、反向代理、静态资源服务器等功能。...
在Linux系统中,默认情况下,只有root用户才能绑定1024以下的端口号,包括常用的Web服务端口80(HTTP)和443(HTTPS)。然而,在某些场景下,出于安全考虑或系统配置需求,我们可能希望让普通用户也能启动Nginx...
Nginx默认运行在`www-data`用户下,所以你需要确保Nginx有读取网站文件的权限。例如,可以将文件所有者更改为`www-data`: ```bash sudo chown -R www-data:www-data /var/www/html ``` Nginx还支持反向代理,可以...
- 为了安全起见,Nginx应以非root用户身份运行。 ```bash /usr/sbin/groupadd -f www # 创建www用户组 /usr/sbin/useradd -g www www # 创建www用户 ``` 3. **启动Nginx**: - 使用以下命令启动Nginx: ``...
**Nginx 配置详解:root 目录设置与常见问题** 在配置 Nginx 服务器时,`nginx.conf` 文件是核心配置文件,它决定了 Nginx 如何响应客户端请求。其中,`root` 指令是用于设置服务器返回文件时的基本目录。本文将...
在没有root权限的情况下,可以将安装路径设置为用户自己的目录,例如`~/local/nginx`。此外,由于没有网络,无法自动下载依赖项,所以确保系统已安装了所有必要的编译工具,如gcc、make等。 完成上述步骤后,Nginx...
Nginx的日志默认保存在`/var/log/nginx`或`/usr/local/nginx/logs`下。通过`access.log`可以查看访问记录,`error.log`则记录错误信息。可以使用工具如Logrotate定期归档和清理日志。 总结,Nginx作为一款强大的Web...
在开始安装Nginx之前,需要准备一个CentOS 7.5 64位操作系统,并且需要 root 权限用户安装依赖。 二、安装依赖 安装Nginx需要依赖gcc、gcc-c++、ssl、pcre、zlib等软件包。首先需要查看操作系统是否已经安装了gcc...
在Ubuntu系统上编译安装Nginx是一项技术性较强的任务,尤其当我们要为Nginx添加特定功能,如FLV(Flash Video)流媒体支持时。以下是对这一过程的详细阐述: 首先,我们需要确保系统已经安装了必要的依赖库。对于...
可以使用`sudo su`或`su -`命令切换到root用户。此外,确保系统的DNS配置正确并且外网连接畅通,这是为了在安装过程中能够访问到Nginx的官方仓库或者第三方源。 **步骤一:更新系统** 在安装新软件之前,我们通常...
在IT行业中,Nginx是一款广泛应用的开源HTTP服务器和反向代理服务器,以其高效、稳定和易用的特点深受开发者喜爱。...记得在每个步骤后检查系统反馈,确保一切按计划进行,这样能避免许多常见的安装问题。
本资源包主要关注在Linux环境下安装和配置Nginx,特别是涉及到“sticky模块”的配置。下面将详细介绍这个过程以及相关知识点。 一、Nginx的安装 1. 更新包列表:在大多数Linux发行版中,首先要确保系统的包列表是...
创建 Nginx 用户是为了安全考虑,避免使用 root 用户运行 Nginx 服务。在创建用户时,需要指定用户的 shell 为 /bin/false,以防止用户登录系统。 四、下载 Nginx 源码 下载 Nginx 源码是编译安装 Nginx 的第一步...
- **最小权限原则**:使用非root用户运行Nginx进程,限制其对系统资源的访问权限。 - **日志监控**:定期审查Nginx的日志文件,以便及时发现潜在的安全问题或异常行为。 综上所述,安装Nginx依赖组件不仅涉及到具体...
通过以下步骤,用户可以确保 Nginx 在 CentOS 环境下稳定运行。 #### 二、环境准备 在开始安装前,请确保已具备以下条件: - 已安装 CentOS 6.6 操作系统; - 具有 root 权限或 sudo 权限; - 已经安装了基本的开发...
本文将详细介绍在Linux环境下,如何按照规范进行Nginx的安装配置,特别是涉及反向代理的设置。 一、安装规范 1.1 安装权限管理 遵循安全原则,Nginx的安装应由系统管理员以root用户身份执行,而配置和日常运维则...
Nginx 的 Fair 负载均衡模块提供了一种智能且高效的方式来分配请求到不同的后端服务器,特别是在后端服务器处理能力不一致的情况下,能够显著提升系统的整体性能和用户体验。通过本文的详细介绍,相信您已经掌握了...
在安装 Nginx 之前,需要先安装几个必要的依赖包: - **gzip 模块**:需要 zlib 库。 - **rewrite 模块**:需要 pcre 库。 - **ssl 功能**:需要 openssl 库。 这些库可以从官方站点下载: - zlib:...
但是,如果问题依然存在,可能需要检查宿主机的文件权限设置,或者考虑是否需要在不使用`--privileged`的情况下调整Docker卷的权限。例如,可以通过在宿主机上设置适当的用户和组所有权,或者在Dockerfile中修改容器...