nginx服务器应用中遇到的两个问题
1》首先是413的错误!
client_max_body_size
Context: http, server, location
It is the maximum size of a client request body. If this size is exceeded, Nginx
returns a 413 Request entity too large HTTP error. This setting is particularly
important if you are going to allow users to upload files to your server over HTTP.
Syntax: Size value
Default value: 1m
这种错误,意思是说客户端请求的数据量太大。nginx的配置中,若没有专门指定这个选项的内容,则默认是1m的大小。但是,对于请求body过大的HTTP请求,则需要给相应的配置配置大一些的适合自己的web站点的body大小。
这个参数的配置适合的位置有 http,server,location三个地方都可以。
2》504 Gateway Time-out错误
这个错误,是和时间配置相关的。大家可能会有这种场景, 比如一个http请求到后端服务,后端服务的时间会比较长才给予前端响应,这个时候就要考虑是否会出现这种504的错误了。
我的应用,是在我们开发的CMS系统中,前端请求后台执行发布13000篇文章的发布。这个就会花点时间了,我们的系统,13000片文章,大概花3分钟。
我们的服务器架构很简单,前端nginx负责静态资源响应,nginx作为反向代理实现负载均衡(tomcat作为后端服务器),处理后端动态http请求,例如发布页面这种后端服务的http请求也在其中。
这种错误,相应的nginx的错误日志中,会看到下面的内容:
// :: [error] #: * upstream timed out (: Connection timed out) while reading response header from upstream, client: 10.90.9.20, server: localhost, request: "GET /CMS/page/articleCenter/deployeeAll?type=41 HTTP/1.1", upstream: "http://10.130.202.135:8080/CMS/page/articleCenter/deployeeAll?type=41", host: "10.130.202.136", referrer: "http://10.130.202.136/CMS/page/pageTreeMgmt"
那么,如何解决这种错误呢?我们先看看nginx的服务器配置文档说明吧!
proxy_read_timeout: Sets read timeout for backend communications
proxy_send_timeout: Sets write timeout for backend communications
这个错误,是由于上述的两个timeout的时间没有设置,默认值比较小,60s,此处,我们将其修改的相对比较大,都改为3000了。
上述两个问题的解决办法很简单,将配置修改后的内容也附在这里作为参考吧!
http {
include mime.types;
default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout ;
keepalive_timeout ;
#gzip on; upstream cms {
server xx.xx.xx.xx:;
}
client_max_body_size 10M;#解决第一个问题的配置
server {
listen ;
server_name localhost;
#下面两行是解决第二个错误的配置
proxy_send_timeout 3000;
proxy_read_timeout 3000;
location /CMS{ proxy_pass http://cms;
proxy_set_header Host $host:$server_port;
proxy_set_header Remote_Addr $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} location /resource {
root html/TK_ROOT;
allow all;
}
}
}
nginx服务器应用中遇到的两个问题的更多相关文章
- Nginx 之四: Nginx服务器的压缩功能和缓存功能
在Nginx服务器配置文件中可以通过配置Gzip的使用,可以配置在http块,server 块或者location块中设置,Nginx服务器可以通过ngx_http_gzip_module模块.ngx ...
- nginx服务器中的安全配置
一.关闭SELinux 安全增强型Linux(SELinux)的是一个Linux内核的功能,它提供支持访问控制的安全政策保护机制. 但是,SELinux带来的附加安全性和使用复杂性上不成比例,性价比不 ...
- Nginx负载均衡中后端节点服务器健康检查的操作梳理
正常情况下,nginx做反向代理,如果后端节点服务器宕掉的话,nginx默认是不能把这台realserver踢出upstream负载集群的,所以还会有请求转发到后端的这台realserver上面,这样 ...
- Nginx负载均衡中后端节点服务器健康检查的一种简单方式
摘自:https://cloud.tencent.com/developer/article/1027287 一.利用nginx自带模块ngx_http_proxy_module和ngx_http_u ...
- Docker中Nginx服务器相关配置
工作中经常需要在服务器上来做一下实验,亲自动手看看效果是否与理论描述的相同.用docker可以很方便的配置所需要的环境,以下内容记录了如何用docker配置一个nginx服务器 下载nginx 从默认 ...
- 在CentOS 7中安装nginx服务器
简要地介绍一下,如何在CentOS 7中安装nginx服务器 下载对应当前系统版本的nginx包(package) # wget http://nginx.org/packages/centos/ ...
- Nginx服务器中配置非80端口的端口转发方法详解
这篇文章主要介绍了Nginx服务器中配置非80端口的端口转发方法详解,文中使用到了Nginx中的proxy_pass配置项,需要的朋友可以参考下 nginx可以很方便的配置成反向代理服务器: 1 2 ...
- Linux下安装PHP并在nginx服务器中进行配置的详细方法
先介绍一下使用的环境:centos 7.4, PHP 7.0 , nginx 1.12 Linux系统版本可以通过命令:lsb_release -a 查看. 现在开始步入正题了! 1. 首先查看一下 ...
- js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快、简单 post:安全,量大,不缓存)(服务器同步和异步区别:同步:等待服务器响应当中浏览器不能做别的事情)(ajax和jquery一起用的)
js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快.简单 post:安全,量大,不缓存)( ...
随机推荐
- LeetCode Implement Stack using Queues (数据结构)
题意: 用队列来实现栈. 思路: 没有什么捷径,纯粹模拟.但是用一个队列就够了. class Stack { /* // Push element x onto stack. void push(in ...
- 特性节点Attribute
深入理解DOM节点类型第六篇——特性节点Attribute document.getElementById('b_results').attributes[0].textContent documen ...
- Day03_JAVA语言基础第三天
1.位运算符 1.面试题(掌握) ^:一个数据对同一个数据^两次,结果还是数据本身 举例:a ^ b ^ b = a 2.注意 知道结论,面试题,以后就完全不用看了 2.逻辑运算符(掌握) ...
- 【转】java 注释规范
原则: 1.注释形式统一 在整个应用程序中,使用具有一致的标点和结构的样式来构造注释.如果在其它项目中发现它们的注释规范与这份文档不同,按照这份规范写代码,不要试图在既成的规范系统中引入新的规范. 2 ...
- python学习笔记 - assert用法
[转自]http://blog.sina.com.cn/s/blog_76e94d210100vz37.html 1.assert语句用来声明某个条件是真的. 2.如果你非常确信某个你使用的列表中 ...
- SAP保存操作记录CDHDR和CDPOS表
http://blog.sina.com.cn/s/blog_7dce1fac01014yp2.html转自sap的字段和对象的修改都会保存旧值,数据保存在CDHDR和CDPOS表中,提取旧值可以采用 ...
- 发布常见问题(C#)
1.Sys.WebForms.PageRequestManagerServerErrorException: 在服务器上处理请求时出现未知错误.服务器返回的状态码为: 500 可能的原因: asp.n ...
- 关于Toad连接DB2的sqlstate=08001错误
新装的centos6.3+db29.7,数据库导入完了的之后用Toad连接访问之的时候出错了. DB2 Database Error: ERROR [08001] [IBM] SQL30081N A ...
- 【BZOJ1007】【HNOI2008】水平可见直线
依旧看黄学长代码,不过这回是看完后自己写的 原题: 在xoy直角坐标平面上有n条直线L1,L2,...Ln,若在y值为正无穷大处往下看,能见到Li的某个子线段,则称Li为可见的,否则Li为被覆盖的.例 ...
- kuangbin_ShortPath F (POJ 3259)
判环模板题 有了上一题的经验过得很轻松 除了因为spfa还不是很熟打错了两个字母 然后debug了一小会 #include <iostream> #include <string&g ...