一种将Nginx与Elasticsearch连用的方案
Elasticsearch是一种先进的,高性能的,可扩展的开源搜索引擎,提供全文搜索和实时分析的结构化和非结构化的数据。
它的特定是可以通过HTTP使用 RESTful API,很容易的融入现有的web架构。因此在高并发的情况下,采用nginx反向代理负载均衡到多台Elasticsearch 服务器上。 ….[阅读全文]
Elasticsearch是一种先进的,高性能的,可扩展的开源搜索引擎,提供全文搜索和实时分析的结构化和非结构化的数据。
它的特定是可以通过HTTP使用 RESTful API,很容易的融入现有的web架构。因此在高并发的情况下,采用nginx反向代理负载均衡到多台Elasticsearch 服务器上。 ….[阅读全文]
通常Nginx连接fastcgi的方式有2种:TCP和unix domain socket
什么是Unix domain socket?—— 维基百科
Unix domain socket 或者 IPC socket是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信。与管道相比,Unix domain sockets 既可以使用字节流和数据队列,而管道通信则只能通过字节流。Unix domain sockets的接口和Internet socket很像,但它不使用网络底层协议来通信。Unix domain socket 的功能是POSIX操作系统里的一种组件。
Unix do ….[阅读全文]
最近经常用人帮忙做压力测试(参考文章:菜鸟的第一次web压力测试:ab命令参数详解),用webbech或者ab等一些工具模拟并发压服务器,若服务器没有限制连接数或带宽,服务器很容易被压跨。
以下是防止压力测试的nginx配置文件(http段落):
cat /usr/local/nginx/conf/nginx.conf
…
http {
…
limit_conn_zone $binary_remote_addr zone=one:10m;
…
}
#如果在1.1.8之后版本还用语法:limit_zone name $variable size,会报警告ng ….[阅读全文]
Apache的httpd-tools包中附带的ab命令,它非常容易使用,ab命令可以直接在Web服务器本地发起测试请求。这至关重要,因为我们希望测试的服务器的处理时间,而不包含数据的网络传输时间以及用户PC本地的计算时间。
需要清楚的是,ab命令进行一切测试的本质都是基于HTTP,所以可以说它是对于Web服务器软件的黑盒性能测试,它获得的一切数据和计算结果,都可以通过HTTP来解释。
另有一些压力测试软件,例如LoadRnner、Jmeter等,则是不同程度上包含了服务器处理之外的时间,比如LoadRunner运行在用户PC上,可以录制浏览器行为,这种测试的结果玩玩侧重于站点用户的角度,有另外一些层面的参考意义。 ….[阅读全文]
也许很多人认为shell不能并发任务,其实可通过其它一些方式来实现。下面的脚本是我批量快速管理500+服务器脚本,阅读该脚本前建议先看《自动执行远程主机命令expect脚本》、《自动远程拷贝expect脚本》和《getopt:命令行选项、参数处理》
用法:
Usage: ./multi_main.sh [-h|–help]
[-v|-V|–version]
[-l|–iplist … ]
[-c|–config … ]
[-t| ….[阅读全文]
以下为nagios的安装与配置脚本,脚本中server:192.168.1.114、client:192.168.1.113,主要监控host-
alive、disk、cpu_procs、load、ssh、swap、users、zombie_procs等,请根据实际环境修改配置文件。
脚本中开源软件版本:
httpd-2.2.22.tar.gz
libiconv-1.13.1.tar.gz
php-5.3.10.tar.gz
nagios-3.3.1.tar.gz
nagios-plugins-1.4.15.tar.gz
nrpe-2.13.tar.gz
使用方法:
cd ….[阅读全文]
本文只是记录一些折腾 nginx 配置的收获。
先说下启用 HTTPS 吧。
其实迁移博客的时候,我就已经启用了 HTTPS,只是没强制跳转而已。这半年多来好像没遇到什么问题,所以应该可以放心用了。
要启用 HTTPS 自然需要一个证书。没什么需求的话,弄个免费的就行了。我阴差阳错地选择了 StartSSL。
网上有教程,我就不详述怎么申请了,基本流程如下:
openssl genrsa -des3 -out example.com_secure.key 4096
op ....[阅读全文]
前言
Nginx以异步、事件驱动的方式处理连接。传统的方式是每个请求新起一个进程或线程,Nginx没这样做,它通过非阻塞sockets、epoll、kqueue等高效手段,实现一个worker进程处理多个连接和请求。
一般情况下下是一个CPU内核对应一个worker进程,所以worker进程数量固定,并且不多,所以在任务切换上消耗的内存和CPU减少了。这种方式很不错,在高并发和扩展能力等方面都能体现。
看图说话,任务切换不见了。
但是异步事件模式很不喜欢阻塞(blocking)。很多第三方模块使用了阻塞模式的调用,有时候,用户乃至模块作者都不知道到阻塞调用会大大降低 ….[阅读全文]
最近发现网站访问特别缓慢,甚至出现504错误,通过top -i
命令查看服务器负载发现负载数值飙升到4.9之多了,并且持续时间越来越频繁直至持续升高的趋势,还以为是被攻击了,对来访IP进行了阈值限制后效果并不是很明显,CDN服务里限制几个主要IP效果依然不是很明显,估计这应该是被恶意扫描攻击了。
通过服务器waf的日志记录分析得出基本都是SQL注入、XSS攻击范畴,这些攻击都绕过了CDN缓存规则直接回源请求,这就造成PHP、MySQL运算请求越来越多,服务器负载飙升就是这个原因造成的,在日志里可以看到几乎大部分都是 GET/POST 形式的请求,虽然waf都完美的识别和拦截了,但是 ….[阅读全文]
将以下Nginx配置代码写入http-server段落下:
http {
server {
add_header X-Frame-Options “SAMEORIGIN”;
add_header X-XSS-Protection “1; mode=block”;
add_header X-Content-Type-Options “nosniff”;
}
}
修改nginx服务器配置,添加X-frame-options响应头。赋值有如下三种: ….[阅读全文]