nginx的压力测试、访问方式及加密

分类:CentOS运维 阅读:54121 次

Nginx 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。今天我们将从多方面来对nginx来作介绍,包括诸如nginx和http的压力测试、nginx的访问方式、nginx的加密访问等

一、安装nginx

1、拆解并安装

tar -zxvf libevent-2.0.16-stable.tar.gz -C /usr/local/src


./configure --prefix=/usr/local/libevent


make && make install



2、处理头文件和库文件


库文件的处理:


编辑/etc/ld.so.conf.d/libevent.conf,内容如下


/usr/local/libevent/lib


头文件的处理:

ln -s /usr/local/libevent/include /usr/include/libevent


3、为了让nginx支持pcre(perl库)的话还需要安装一个名为pcre的软件包


经查看后发现已经有安装,但是有些额外的库放在名为pcre-devel的软件包内,安装该软件包


nginx的压力测试、访问方式及加密

4、安装配置nginx


groupadd -r nginx


useradd -r -g nginx -s /sbin/nologin -M nginx (-M不创建任何家目录)


tar -zxvf nginx-1.0.11.tar.gz -C /usr/local/src


cd /usr/local/src/ nginx-1.0.11



./configure \


--conf-path=/etc/nginx/nginx.conf \


--error-log-path=/var/log/nginx/error.log \


--http-log-path=/var/log/nginx/access.log \


--pid-path=/var/run/nginx/nginx.pid \


--lock-path=/var/lock/nginx.lock \


--user=nginx \


--group=nginx \


--with-http_ssl_module \


--with-http_flv_module \


--with-http_stub_status_module \


--with-http_gzip_static_module \


--http-client-body-temp-path=/var/tmp/nginx/client/ \


--http-proxy-temp-path=/var/tmp/nginx/proxy/ \


--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \


--with-pcre (获得pcre的支持)



make && make install



5、启动nginx


cd /usr/local/sbin


./nginx -t (测试语法)


nginx的压力测试、访问方式及加密

新建目录之后再做测试


nginx的压力测试、访问方式及加密

开启服务


nginx的压力测试、访问方式及加密

访问测试


nginx的压力测试、访问方式及加密


6、配置环境变量,可以在其它目录下直接输入命令开启服务

PATH=$PATH:/usr/local/nginx/sbin


二、http的安装



1、安装


rpm -ivh /mnt/cdrom/Server/httpd-2.2.3-31.el5.i386.rpm



2、开启http服务并生成访问页面(为了和nginx作对比这里最好用同样的页面访问

service httpd strart


3、访问

nginx的压力测试、访问方式及加密

三、ab测压


如何测试APACHE的性能,有一个测试工具,就是APACHE自带的测试工具AB(apache benchmark).在APACHE的bin目录下。
格式: ./ab [options] [http://]hostname[:port]/path
参数:
-n requests Number of requests to perform
//在测试会话中所执行的请求个数。默认时,仅执行一个请求
-c concurrency Number of multiple requests to make
//一次产生的请求个数。默认是一次一个


1、http测试:


测试1:


nginx的压力测试、访问方式及加密

nginx的压力测试、访问方式及加密


测试2:


nginx的压力测试、访问方式及加密


2、nginx测试


关闭http,开启nginx


nginx的压力测试、访问方式及加密


测试1:


nginx的压力测试、访问方式及加密

nginx的压力测试、访问方式及加密


测试2:


nginx的压力测试、访问方式及加密

nginx的压力测试、访问方式及加密

可以发现:http在接受过多的请求时会挂掉,但是nginx却在比http接受更多的请求时表现的更加出色,但是唯一不好的就是nginx不稳定

四、访问方式


1、虚拟主机(基于ip地址的访问)


1)、我们要分别实现技术部站点和主站点的访问


ifconfig eth0:0 192.168.2.101 (访问技术部站点的地址)



2)、为技术部站点新建目录和网页


mkdir /usr/local/nginx/tec


cd /usr/local/nginx/tec


echo "welcome to tec" >index.html



3)、编辑配置文件


vim /etc/nginx/nginx.conf


nginx的压力测试、访问方式及加密

把server内容进行拷贝,再做修改,形成对tec站点的配置


nginx的压力测试、访问方式及加密


4)、启动服务,访问测试


测试语法


nginx的压力测试、访问方式及加密

重启服务


nginx的压力测试、访问方式及加密

依次访问主站点和技术部站点


nginx的压力测试、访问方式及加密


nginx的压力测试、访问方式及加密



2、基于主机头的访问


修改配置文件


nginx的压力测试、访问方式及加密

nginx的压力测试、访问方式及加密

关闭一个ip地址,并测试环境做地址解析


ifconfig eth0:0 down (关闭p地址)


在C:\WINDOWS\system32\drivers\etc目录下编辑hosts文件,添加下面内容


nginx的压力测试、访问方式及加密

重启服务,进行访问测试


nginx的压力测试、访问方式及加密


nginx的压力测试、访问方式及加密


3、虚拟目录


基于虚拟目录的访问,最后实现访问http://www.abc.com/mail,实际上是访问安装目录下的abc目录


cd /usr/local/nginx/


mkdir abc


cd abc


echo "mail" >index.html


vim /etc/nginx/nginx.conf


nginx的压力测试、访问方式及加密

重启服务


访问出错


nginx的压力测试、访问方式及加密

上边的出错是因为别名记录的路径问题,作出修改,如下图


nginx的压力测试、访问方式及加密

再次访问


nginx的压力测试、访问方式及加密

五、站点安全



1、https


https是实现web安全的一种有效的方式,如下图所示:


nginx的压力测试、访问方式及加密


客户端以https方式访问web服务器,服务器端向客户端出示证书,客户端会对证书进行是否在有效期、是否信任颁发机构以及持有者标识是否与请求的标识是否唯一。当证书验证通过后,客户端浏览器会随机产生K值,再用公钥加密K值并传到web服务器端 ,在服务器端把自己的私钥打开K值。这样一来,服务器端和客户端都有了K值,双方就可以利用K值来加密数据进行交流了。



2、实现CA的方式好一种,下面我们来做一下介绍:


当CA与web服务器不在同一台机器上,有两种做法:



nginx的压力测试、访问方式及加密

1)、在线注册


CA端本身也是一个web服务器(windows主机可以做到),web server端通过http访问CA端,把请求输入到CA端,CA端进行审核,审核完成后把证书放到ftp上,server端从CA的ftp上下载就行了。



2)、CA用linux来实现,linux系统可以通过openca来实现,但是这种方式实现起来太复杂了,我们可以以简单的openssl来替代,只不过openssl的CA端与web server端通常在同一台机器上。但是如果不在同一台机器上,我们也可以实现。首先在web server端把请求做好,通过网络上传到CA端,让CA进行签署,之后把证书放到ftp,web server端再把证书下下来就行了。



3、当然除了CA和web server在不同主机上,还有CA与web server在同一台主机上的形式,下面以CA与web server在同一台主机上openssl建立CA方式为大家做讲解:


编辑配置文件


1)、vim /etc/pki/tls/openssl.cnf


nginx的压力测试、访问方式及加密

nginx的压力测试、访问方式及加密

nginx的压力测试、访问方式及加密


2)、/新建CA需要的目录和文件


cd /etc/pki/CA


mkdir crl certs newcerts (分别为存放证书吊销列表、存放证书和存放新证书的三个目录)


touch index.txt serial (分别为数据库索引文件和序列号文件)


echo "01" >serial (为序列号文件赋初始值)


产生CA自己的私钥和证书文件


nginx的压力测试、访问方式及加密

chmod 600 private/cakey.pem (私钥需要严格保管,故修改私钥文件权限)

生成证书文件


nginx的压力测试、访问方式及加密


3)、web server要想拥有证书,首先要有请求文件,而想要拥有请求文件要先产生私钥。


生成一个目录用于存放web server需要的三个文件


mkdir -pv /usr/local/nginx/certs


cd /usr/local/nginx/certs


nginx的压力测试、访问方式及加密

chmod 600 nginx.key



产生证书文件



nginx的压力测试、访问方式及加密


4)、把上边产生的三个文件和

vim /etc/nginx/nginx.conf


把文件https的内容复制并作修改


nginx的压力测试、访问方式及加密

拷贝上边内容,然后修改


nginx的压力测试、访问方式及加密

重启服务并查看


./nginx -s stop


./nginx


nginx的压力测试、访问方式及加密

发现http服务的端口和https的服务端口都打开了



4、证书的安装


1)、访问技术部站点


nginx的压力测试、访问方式及加密


nginx的压力测试、访问方式及加密


nginx的压力测试、访问方式及加密


nginx的压力测试、访问方式及加密

发现站点信息未通过加密,客户端并不信任颁发机构,反言之,如果客户端信任颁发机构,则就会信任颁发机构颁发的证书。



2)、把CA机构的证书和服务的证书进行合并


cd /usr/local/nginx/certs/


cp /etc/pki/CA/cacert.pem ./


备份服务器证书


mv nginx.cert nginx.cert.bak


合并证书


cat nginx.cert.bak cacert.pem >nginx.cert



3)、重启服务,再次访问技术部站点


cd /usr/local/nginx/sbin/


./nginx -s stop


./nginx


nginx的压力测试、访问方式及加密


nginx的压力测试、访问方式及加密


nginx的压力测试、访问方式及加密


nginx的压力测试、访问方式及加密


再次访问,发现已经成功实现了验证


nginx的压力测试、访问方式及加密


本文出自 “xiaoxiaozhou” 博客,请务必保留此出处http://xiaoxiaozhou.blog.51cto.com/4681537/1305217