`

Nginx返回数据丢失

阅读更多

A服务器 代理 B服务器的内容,但发现用户访问A服务器只能获取到部分内容。

检查几个问题:

1 直接访问B服务器,正常
2 访问非PHP内容,正常
3 关闭压缩也没有解决问题,与压缩无关

试过 gzipgunzip的功能,都没有解决,不过这两个跟缓存压缩数据有帮助哦

后来查得两篇文章,解决了,是 fastcgi_temp 目录的读写权限问题。表现症状:Nginx的错误日志出现大量类似如下的错误:

2013/08/25 00:41:28 [crit] 32763#0: *5439 open() "/Data/apps/nginx/fastcgi_temp/5/02/0000000025" failed (13: Permission denied) whil
e reading upstream, client: 203.171.237.2, server: www.aslibra.com, request: "GET /thread.html HTTP/1.0", upstream: "f
astcgi://127.0.0.1:9000", host: "www.aslibra.com", referrer: "http://www.aslibra.com/f.html"

 

 参考文章里的解决方式:

从这句判断 可能是 生成的文件过大 要以 文件的形式存放  然后 nginx 有没有权限读取造成.于是 chmod -R 764 /usr/local/nginx/fastcgi_temp/ 问题解决.

参考之二: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 的作用就在于此。多出来的数据会被临时写入到文件中,放在这个目录下面。

内存中缓冲了 36Kb,剩下的会写入的文件中。而实际的情况是,运行 Nginx Process 的用户并没有 fastcgi_temp 目录的写权限,于是剩下的数据就丢失掉了。

解决方法就比较简单了,粗暴的删掉 fastcgi_temp 目录或者温柔的 chown + chmod 都可以解决问题

分享到:
评论

相关推荐

    nginx1.8.1

    3. **会话保持**:通过设置 cookie 或者 IP哈希策略,Nginx 可以保证用户在集群中的会话一致性,避免会话丢失。 **三、Nginx 配置** 1. **基本配置文件**:Nginx 的配置主要在 `nginx.conf` 文件中进行,包括全局...

    redis2-nginx-module-0.15

    - **备份与恢复**:定期备份 Redis 数据,以防数据丢失。 6. **扩展应用** - **分布式锁**:利用 Redis 实现分布式锁,解决多节点共享资源的问题。 - **会话持久化**:通过 Redis 存储用户会话,实现跨服务器的...

    nginx Web服务器代码

    维护方面,定期更新Nginx以获取安全补丁,监控日志以排查问题,进行定期备份以防止数据丢失。 综上所述,Nginx以其高效、稳定和灵活的特性,在Web服务器领域占据重要地位。深入理解其工作原理和配置,对于构建高...

    nginx+tomcat7负载均衡+redis缓存session

    使用Redis作为session存储,可以避免单个服务器上session数据丢失,同时使得session数据在多台服务器间共享,这对于负载均衡环境至关重要。通过将session ID作为键,session数据作为值存储在Redis中,Nginx可以在...

    nginx_upstream_check_module-master2019.zip

    - **数据库集群**:对于数据库集群,可以及时发现并隔离故障节点,减少数据丢失风险。 - **微服务架构**:在微服务环境中,每个服务可能有多个实例,健康检查能保证请求的高效和稳定路由。 5. **维护与更新** ...

    nginx_tomcat_redis搭建负载均衡共享session

    - **持久化与高可用**:Redis支持数据持久化,防止因服务器重启而丢失Session数据。此外,还可以通过Redis Sentinel或Redis Cluster实现高可用性,保证即使在单个Redis节点故障的情况下,服务依然可以正常运行。 4...

    nigix实现MYSQL主备高可用双活

    - **定期备份**:定期对数据库进行备份,以防数据丢失。 通过以上步骤,我们可以构建一个基于Nginx的MySQL主备高可用双活系统。这个系统不仅能保证在主库故障时快速切换,还能通过双活策略提高读操作的处理能力,...

    Nginx+Tomcat+Memcached集群

    在Nginx+Tomcat集群中,Memcached用于实现Session共享,避免用户在集群中的不同Tomcat实例间切换时丢失Session数据。当用户登录后,其Session信息会被存储在Memcached中,然后由Nginx确保请求被转发到具有该Session...

    FastDFS 5.01 + nginx + cache安装手册

    - 数据备份:定期备份FastDFS中的重要文件和元数据,以防数据丢失。 - 权限控制:设置合理的文件权限,防止非法访问。 - 监控与报警:设置监控系统,监控FastDFS、Nginx的服务状态,异常时及时报警。 - 安全更新:...

    nginx+tomcat+redis +redis客户端 等负载均衡资料

    当`nginx`将请求转发至`tomcat`时,`tomcat`会处理业务逻辑并返回响应。然而,单一的`tomcat`实例可能无法满足高并发的需求,因此通过`nginx`进行负载均衡配置,可以确保在高流量情况下系统的稳定运行。 `redis`则...

    Nginx模块参考手册中文版

    EmptyGIF模块提供了一个占位符图像,用于替代丢失或无法加载的图像资源。 ##### FastCGI模块 (FastCGI) FastCGI模块支持通过FastCGI协议与后端应用程序通信,例如PHP。 ##### Geo模块 (Geo) Geo模块根据客户端的...

    如何检测Web服务请求丢失问题1

    通过对比Nginx和Web服务端的数据,可以发现是否存在请求丢失。在本例中,Nginx记录了100000个请求,但Web服务端只处理了98717个,说明有1283个请求丢失。\n\n【问题分析】阶段,发现Nginx的日志中有HTTP返回码499的...

    nginx-redis-tomcat_Session共享

    在多台Tomcat服务器的环境中,如果每台服务器都独立维护Session,那么用户在一台服务器上登录后,切换到另一台服务器时会丢失Session信息,导致用户体验下降。因此,需要一种跨服务器共享Session的解决方案。 4. *...

    Opcache导致php-fpm崩溃nginx返回502

    标题中的问题涉及到PHP的性能优化工具Opcache与另一个扩展 Zend Guard之间的冲突,以及这个问题如何导致PHP-FPM(PHP FastCGI Process Manager)崩溃并使Nginx返回502错误。502错误通常意味着网关错误,即服务器无法...

    Nginx 重定向时获取域名的方法示例

    在配置Nginx进行重定向时,应该谨慎处理$host变量,确保能够正确反映用户原始请求的域名,避免造成不必要的错误跳转或数据丢失。 通过理解这些知识点,开发者可以在配置Nginx服务器时更有效地处理域名获取和HTTP...

    PHP简单实现定时监控nginx日志文件功能示例

    1. 日志文件的读取需处理文件锁定的问题,防止其他进程同时操作该文件造成数据丢失或损坏。 2. 在传输过程中,数据的格式和编码需要保持一致,防止数据在传输过程中解析错误。 3. 定时监控的机制需要根据实际需要...

    nginx+lua学习

    例如,可以配置Nginx在接收到特定请求时,从Redis中获取数据并返回给客户端。 9. **Redis连接池** 为了提高性能,Nginx可以通过Lua Redis库创建和管理连接池,复用与Redis服务器的连接,减少连接建立和释放的开销...

    Python基于Flask爬取疫情数据,使用Echarts实现最终可视化.zip

    这样,即使服务器重启,之前爬取的数据也不会丢失。 7. **数据分析**: 在获取到原始数据后,开发者可能还进行了简单的数据清洗和分析,以确保数据的质量和一致性。这可能涉及到对缺失值的处理、异常值的排查以及...

    行业分类-设备装置-传输多媒体数据的方法、伺服器及系统.zip

    - **客户端-服务器模型**:传统的数据传输模式,客户端向服务器发送请求,服务器响应并返回数据。 - **P2P(Peer-to-Peer)网络**:用户之间直接交换数据,减轻服务器压力,如BitTorrent。 - **边缘计算**:将计算...

    使用referer指令配置Nginx服务器来防止图片盗链

    2. 为了防止数据丢失,我们应该先备份原文档。接下来,找到location块,该块用于设置对特定文件类型的请求处理。对于图片文件(例如:gif、jpg、jpeg、png、bmp、swf等),配置如下: location ~.*\.(gif|jpg|jpeg|...

Global site tag (gtag.js) - Google Analytics