标签为 "nginx" 的存档

前端机超时3s ,9s

这几天遇到一个很奇怪的问题,搜索的前端机经常会有一些超时的请求,以为是业务哪块效率不行导致的。后来就写了一个php,只做 echo 1 操作,结果在大量curl时,还是会出先超时的情况,而且仔细分析后,出现的超时要么是比正常时间多3秒整,要么是比正常时间多9s整,只有这两种可能,没有其它的超时时间,这就更奇怪了,。查了一下资料,3s和9s的超时,是网络问题引起的。
Mysterious 3 and 9 second delays calling connect()

If a client tries to
establish a TCP connection to a server but the server does not
respond, then the client tries again after 3 seconds, then once again
after 6 more seconds. The number of retry attempts is configurable by
changing tcp_syn_retries ("sysctl net.ipv4.tcp_syn_retries," "man 7
tcp" for description).

20131126174519-backlog-3s-nginx

nginx php 3s 9s timeout delay

nginx php 3s 9s timeout delay

再底层的东西也咱现在也不了解啊。。还得慢慢学啊,可是问题还得解决啊。。
于是把问题抛给了op的同事,,最后解决了。。
解决办法:
修改 /usr/local/nginx/conf.d/default.conf 的 backlog=8192 后,超时3秒、9秒的问题得到验证解决。
修改了nginx的默认的backlog参数。
具体原因是啥,现在也不懂,记录下来,以后慢慢参悟吧。

nginx与HTTP_X_FILENAME

在实现一个html5异步批量上传文件的功能时,遇到一个例子,使用xhr进行post提交,会模拟一个HTTP_X_FILENAME请求头,可是这个请求信息$_SERVER[‘HTTP_X_FILENAME’] 只有在apache下才能获取到,在nginx下无法获取。所以可以简单粗暴的,直接获取输入流(php://input)进行判断。

Nginx Location 的语法详解,与简单配置

一、介绍Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.
二、Location语法语法:location [=|~|~*|^~] /uri/ { … }
注:
1、~ 为区分大小写匹配
2、~* 为不区分大小写匹配
3、!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
示例一:
location / { }
匹配任何查询,因为所有请求都以 / 开头。但是正则表达式规则将被优先和查询匹配。
示例二:
location =/ {}
仅仅匹配/
示例三:
location ~* .(gif|jpg|jpeg)$ {
rewrite .(gif|jpg)$ /logo.png;

注:不区分大小写匹配任何以gif,jpg,jpeg结尾的文件
Read more…

nginx 列出文件目录

nginx 理出文件目录:
代码备忘:

    location /upload/output {
            root   /home/s/www/sostat;
            autoindex on;
            autoindex_exact_size on;
            autoindex_localtime on;
    }

nginx 取消缓存

在开发的时候,总是不希望js,css文件缓存的,所以我们希望能取消缓存,修改nginx配置即可实现取消缓存。
在配置文件的server{}内,添加这么一句即可:

location ~ .*/.(css|js)$ {
    add_header Cache-Control 'no-store';
}

Nginx出现“413 Request Entity Too Large”错误解决方法

在使用curl上传POST一段数据时,被提示413 Request Entity Too Large,应该是nginx限制了上传数据的大小。
解决方法就是
打开nginx主配置文件nginx.conf,一般在/usr/local/nginx/conf/nginx.conf这个位置,找到http{}段,修改或者添加

client_max_body_size 2m;

然后重启nginx,

sudo /etc/init.d/nginxd reload

即可。
要是以php运行的话,这个大小client_max_body_size要和php.ini中的如下值的最大值差不多或者稍大,这样就不会因为提交数据大小不一致出现错误。

post_max_size = 2M
upload_max_filesize = 2M

Read more…