环境:centos-6.4-x86-64

软件:nginx-1.4.4.tarlibevent-2.0.16-stable.tar

Nginx("engine x") 是一个高性能的 HTTP 反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器

Nginx的优点:

在高连接并发的情况下,NginxApache服务器不错的替代品:Nginx美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应。

接下来介绍nginx的安装

nginx安装前要先安装pcrelibevent,在linux内核版本2.6以上都已经集成了pcre,我们这里用的正是2.6以上的版本所以不需要安装pcr。那就先安装libevent。解压libevent/usr/local/sec,执行./configure--prefix=/usr/local/libevent。完成后执行make && make install

然后切换到/usr/local/libevent目录下看到有一个lib文件夹,这里面包含了静态库和动态库,我们需要输出到系统当中去,编辑/etc/ld.so.conf.d/libevent.conf

nginx的站点安全_linux

然后使用ldconfig更新缓存。接着安装nginx,解压nginx/usr/local/src切换到解压后的目录中执行./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组和nginx帐号

groupadd -r  nginx

useradd -r -g nginx -s /bin/nologin   -M nginx

编写nginx控制脚本/etc/init.d/nginx

#!/bin/bash

[ -e /etc/init.d/functions ] && ./etc/init.d/functions

prog=/usr/local/nginx/sbin/nginx

lockfile=/var/lock/nginx.lock

start(){

      if [ -e $lockfile ];then

      echo "nginx server is started"

      else echo -n "nginx serveris starting... "

      sleep 1

      $prog &>/dev/null && echo  "[ ok]" && touch $lockfile ||echo "[ failer ]"

      fi

}

stop(){

      if [ ! -e $lockfile ];then

      echo "nginx server is stoped"

      else echo -n "nginx server is stoping... "

      sleep 1

      $prog -s stop && echo "[ ok ]" && rm -rf$lockfile ||echo "[ failer ]"


      fi

}

reload(){

       if [ -e $lockfile ];then

       $prog -s reload &>/dev/null && echo "[ ok ]" ||echo "[ failer ]"

       else $prog &>/dev/null && touch $lockfile

               fi

}

configuration() {

      $prog -t

}

case $1 in

start)

 start

  ;;

stop)

 stop

  ;;

reload)

 reload

  ;;

configuration)

 configuration

  ;;

*)

echo "USAGE:start|stop|reload|configuration"

 ;;

Esac


启动nginx测试能否访问

nginx的站点安全_nginx_02

可以访问。接下来做站点安全,先介绍身份验证,编辑/etc/nginx/nginx.conf

nginx的站点安全_nginx_03

在要控制的站点内图上的那两句话。然后使用htpasswd创建htpasswd。要使用htpasswd要安装httpd-tools。完成之后重新加载nginx

nginx的站点安全_engine_04

访问出现让输入用户名和密码,说明已经做成。

接着介绍来源控制,来源控制也是在需要控制的站点目录下设置允许和拒绝

具体做法如下图

nginx的站点安全_linux_05

先用192.168.29.1来进行访问

nginx的站点安全_站点安全_06

被拒绝掉了。再用192.168.29.132访问

nginx的站点安全_engine_07

可以访问。

接着介绍https的实现。要实现https就要用到数字证书,数字证书要有颁发机构CA,我们就在本机上安装openssl来实现CA

首先安装openssl,接着编辑/etc/pki/tls/openssl.conf,主要修改一些默认值

nginx的站点安全_nginx_08

修改匹配的规则,不然将无法给网站签发证书

nginx的站点安全_站点安全_09

就先修改这么多

然后创建index.txtserial,并且给serial一个初值

nginx的站点安全_nginx_10

CA也要自己的公钥,私钥和证书

使用openssl   genrsa 1024   >private/cakey.pem 产生CA私钥

由于要保证私钥的安全性所以要修改权限

nginx的站点安全_nginx_11

使用openssl req-new -key private/cakey.pem -x509 -out cacert.pem 产生证书

nginx的站点安全_站点安全_12

接下来就要配置网站的私钥请求文件和利用CA签发证书

切换到/etc/nginx目录下创建一个文件夹存放文件使用命令 mkdir certs,然后切换到该目录中

产生私钥:openssl       genrsa  1024  >nginx.key 然后修改权限为600

产生请求文件:opensslreq  -new -key  nginx.key  -out nginx.crq

nginx的站点安全_linux_13

然后签发证书:

openssl  ca  -in nginx.key -out nginx.cert

修改nginx的配置文件如下图

nginx的站点安全_站点安全_14

重新加载nginx的配置文件,然后通过https访问www.abc.com

nginx的站点安全_engine_15

到这里就nginx的站点安全就介绍完了。