Nginx:强劲的Web引擎

     Nginx是一款轻量级的Web服务器(反向代理服务器)及电子邮件代理服务器。由俄罗斯所开发,供其大型的入口网站及搜索引擎Rambler使用。其特点是内存占用很少,并发能力很强.Nginx的出现不是很早,但它的发展速度却是惊人的,嫣然已经成为世界门户网站考虑的对象。中国大陆我们比较熟悉的有:新浪、网易、腾讯、小米、淘宝等等。下面是Nginx的世界占有率排名:

下面我们通过一些小的测试来简单了解一下Nginx的强大。

【准备工作】

①Nginx的官网下载最新的源码:nginx-1.3.16.tar.gz

②Libeventd官网下载最新源码:libevent-2.0.18-stable.tar.gz

说明:nginx采用Epoll【事件通知】机制,需要libevent库的支持,在Red Hat的光盘上是有的,不过版本很低。

③Pcre:一个Perl库,包括perl兼容的正规表达式库,也是需要的。

在Red Hat的光盘上是有的,而且默认已经装过了,但还需要它的一个devel包pcre-devel-6.6-2.e15_1.7(不装编译会出错的).

④Apache:安装Red Hat光盘自带(为了用它带的压力测试工具ab)

一:源码安装Nginx

①创建Nginx服务的nologin系统账号

  groupadd  -r nginx

  useradd -r  -g  nginx  -M  nginx

② 解压缩源码.

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

  cd  /usr/local/src/nginx-1.3.16

③源码安装.

   ./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

  make  &&  make install 

二:Nginx&Apache的压力测试比较分析

拷贝nginx的主页文件到apache的主目录下(用于压力测试公平性)

cp   /usr/local/nginx/html/index.html  /var/www/html

启动Apache服务,进行压力测试.

service  httpd  start

停掉Apache服务,启动Nginx进行压力测试.

注意:启动Nginx前要先建一个client访问时的临时目录.

mkdir  -pv  /var/tmp/nginx/client/

启动nginx服务.

/usr/local/nginx/sbin/nginx

测试结果显而易见了。。。。。。。。

三:Nginx的一些基础应用

【基于ip地址的虚拟主机】(vim /etc/nginx/nginx.conf)

 添加两块网卡:eth0 192.168.145.100  

             eth0:0 192.168.145.101

server {

        listen       192.168.145.100:80;

        server_name  localhost;

        location / {

            root   html;

            index  index.html index.htm;

        }

        error_log  /var/log/nginx/error.log;

        access_log /var/log/nginx/access.log;

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

}

server {

        listen       192.168.145.101:80;

        server_name  localhost;

        location / {

            root   /tec;

            index  index.html index.htm;

        }

        error_log  /var/log/nginx/tec_error.log;

        access_log /var/log/nginx/tec_access.log;

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

}

【基于主机头的虚拟主机】(vim /etc/nginx/nginx.conf)

server {

        listen       192.168.145.100:80;

        server_name  www.wpp.com;

        location / {

            root   html;

            index  index.html index.htm;

        }

        error_log  /var/log/nginx/error.log;

        access_log /var/log/nginx/access.log;

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

}

server {

        listen       192.168.145.100:80;

        server_name  tec.wpp.com;

        location / {

            root   /tec;(这个目录要自己建立,目录下放置主页html文件

            index  index.html index.htm;

        }

        error_log  /var/log/nginx/tec_error.log;

        access_log /var/log/nginx/tec_access.log;

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

加密访问】

Step1:建立证书颁发机构CA

vim /etc/pki/tls/openssl.cnf 

②创建CA需要的需要的3个目录(certs、newcerts、crl)和2个文件(index.txt、serial)

cd /etc/pki/CA/ 

mkdir  certs newcerts crl  

touch index.txt  serial

echo 01 >serial(给serial一个初始序号)  

③生成CA自己的私钥文件,并修改权限,放到自己的私钥存放目录(private/)

CA给自己颁发证书.(生成证书文件cacert.pem)

Step2:建立Nginx的安全目录,并生成相关的私钥和证书文件.

mkdir -pv /usr/local/nginx/certs

  cd   /usr/local/nginx/certs

②生成私钥文件(nginx.key),并修改权限.

chmod  600  nginx.key

③提取刚才生成的私钥文件,生成请求证书文件(nginx.csr).

④将请求证书文件提交给证书颁发机构CA,生成证书文件(nginx.crt).

Step3:编辑配置文件,将我们的站点(www.zzdx.com)配置加密访问.

vim  /etc/nginx/nginx.conf(修改完配置文件记得重启服务)

Step4:加密访问测试.(为了方便测试:修改主机的Hosts文件)

Hosts路径(C:\Windows\System32\drivers\etc\HOSTS)

在浏览器的地址栏内输入 (https://www.zzdx.com),测试.

会提示找不到证书的颁发机构CA,那么我们该感到奇怪了,我们明明建立了CA了啊,而且也有了CA颁发的证书了啊,那为什么会没有呢?

怎么解决这个问题呢?

在Apache上把SSL被做成了它的一种模块,用于调用,而且有证书链的感念,所以可以通过证书链找到证书颁发机构。但是这些在Nginx上没有,但还是有解决办法的,下面就是一种好的解决方法:

既然没有找到CA的链,那我们自己创建一个他们的链不就行了!

cd  /usr/loacl/nginx/certs/ 

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

cat cacert.pem >>nginx.crt(将CA的私钥文件内容从定向到nginx的后面)

清空浏览器的缓存信息,

在浏览器的地址栏内输入 (https://www.zzdx.com),再次测试.

会提示当前证书是由不信任的CA所颁发的,但是也能强制访问的.

下面来解决一下不信任的问题:

在浏览器的证书管理里面已经可以查询到我们的CA信息了.

清空一下浏览器缓存信息,再次测试,这一次就可以正常访问了。。。。。。。

是不是很好玩呢?有兴趣的朋友也可以自己试一试哦!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章