Nginx——强大的web
Nginx(发音同 engine x)是一款轻量级的web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好.中国大陆使用nginx网站用户有:新浪、网易、 腾讯等。
在安装之前我们需要两个库。Pcre和libevent
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()初始化.
上传我们需要的两个文件
1.安装libevent库
拆解文件
安装库并指明安装路径
Make && make install
处理库文件
[root@host libevent]# vim /etc/ld.so.conf.d/libevent.conf
刷新一下内存,再查找一下
处理头文件
下面安装pcre
查看一下关于pcre库的安装
我们还需要安装pcre-devel-6.6-2.el5_1.7.i386.rpm
创建组合用户
安装nginx
1、拆包
2、安装
执行文件
/usr/local/nginx/sbin/nginx
3、看一下nginx的配置文件 /etc/nginx/nginx.conf
4、下面我们启动一下nginx试试
发现缺少目录,那我们创建之后,在启动一下。
改变一下环境变量,有利于我们以后很好的启动和控制nginx
5、访问以下我们的站点目录
*******************************************************************************
*******************************************************************************
加密访问
第一步: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)
第二步:建立Nginx的安全目录,并生成相关的私钥和证书文件.
mkdir -pv /usr/local/nginx/certs
cd /usr/local/nginx/certs
生成私钥文件(nginx.key),并修改权限.
chmod 600 nginx.key
提取刚才生成的私钥文件,生成请求证书文件(nginx.csr)
将请求证书文件提交给证书颁发机构CA,生成证书文件(nginx.crt).
第三步:编辑配置文件,将我们的站点(www.zzdx.com)配置加密访问.
vim /etc/nginx/nginx.conf(修改完配置文件记得重启服务)
第四步:加密访问测试.(为了方便测试:修改主机的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信息了.
转载于:https://blog.51cto.com/muxiaohao/1288275