2014-04-03 17:52:01 来源:IT技术网 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.server110.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.server110.com)配置加密访问. vim /etc/nginx/nginx.conf(修改完配置文件记得重启服务) Step4:加密访问测试.(为了方便测试:修改主机的Hosts文件) Hosts路径(C:WindowsSystem32driversetcHOSTS) 在浏览器的地址栏内输入 (https://www.server110.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.server110.com),再次测试. 会提示当前证书是由不信任的CA所颁发的,但是也能强制访问的. 下面来解决一下不信任的问题: 在浏览器的证书管理里面已经可以查询到我们的CA信息了. 清空一下浏览器缓存信息,再次测试,这一次就可以正常访问了。。。。。。。 是不是很好玩呢?有兴趣的朋友也可以自己试一试哦!!! 继续阅读