Nginx——强大的web

Nginx(发音同 engine x)是一款轻量级的web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好.中国大陆使用nginx网站用户有:新浪、网易、 腾讯等。

在安装之前我们需要两个库。Pcrelibevent

pcre

(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正规表达式库.这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是很有用的。 Boost太庞大了,使用boost regex后,程序的编译速度明显变慢。测试了一下,同样一个程序,使用boost::regex编译时需要3秒,而使用pcre不到1秒。因此改用pcre来解决C语言中使用正则表达式的问题

libevent

是一个强大的跨平台的事件通知库,如果不想被多线程困扰,可以考虑这个平台,它从1.2.* 版本开始支持轻量级的http server 开发支持,随后陆续还推出轻量级 DNS server、RPC server 开发支持,这组事件API提供了一种当某个指定文件描述符有效或时间到达时执行某个函数的机制.在使用事件API前必须使用event_init()初始化.

上传我们需要的两个文件

095308549.png

1.安装libevent库

拆解文件

095312640.png

安装库并指明安装路径

095312706.png

Make && make install

095312693.png

处理库文件

095314907.png

[root@host libevent]# vim /etc/ld.so.conf.d/libevent.conf

095314984.png

刷新一下内存,再查找一下

095315171.png

处理头文件

095316772.png


下面安装pcre

查看一下关于pcre库的安装

095316604.png

我们还需要安装pcre-devel-6.6-2.el5_1.7.i386.rpm

095318238.png

创建组合用户

095318748.png



安装nginx

1、拆包

095319697.png

2、安装

095322868.png

095322287.png

执行文件

/usr/local/nginx/sbin/nginx

095325580.png

3、看一下nginx的配置文件 /etc/nginx/nginx.conf

095325459.png

4、下面我们启动一下nginx试试

095325254.png

095328219.png

发现缺少目录,那我们创建之后,在启动一下。

095330397.png

改变一下环境变量,有利于我们以后很好的启动和控制nginx

095330908.png

5、访问以下我们的站点目录

095331442.png




*******************************************************************************

*******************************************************************************



加密访问

第一步:vim  /etc/pki//tls/openssl.cnf

095332719.png

095333318.png

095334365.png

创建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/)

095335956.png

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

095337836.png

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

mkdir -pv /usr/local/nginx/certs

 cd   /usr/local/nginx/certs

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

095337486.png

chmod  600  nginx.key

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

095339304.png


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

095341131.png

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

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

095342622.png

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

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

095344224.png

在浏览器的地址栏内输入 (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所颁发的,但是也能强制访问的.

095346189.png

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


100553421.png

100555332.png

100557703.png

100559816.png

100600638.png

100602445.png

100606328.png

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

100608136.png

100609222.png