2014-04-03 17:52:01
来 源
IT技术网
Nginx
本文介绍Nginx服务器安装过程与设置HTTPS的方法,希望对于初学Nginx服务器相关的朋友有帮助,更多Nginx安装、配置、报错处理等资源请本站内搜索。。
     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信息了. 清空一下浏览器缓存信息,再次测试,这一次就可以正常访问了。。。。。。。 是不是很好玩呢?有兴趣的朋友也可以自己试一试哦!!!

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。