首页 > 代码库 > Nginx常见模块的使用

Nginx常见模块的使用

Nginx常见模块的使用

安装好nginx后或者搭建完lnmp环境后为了实现一些功能,则需要使用各种各样的模块

 rewrite的使用

[root@wang nginx]# vim nginx.conf

DF17E2A9EAAA4BB89C3C48740704A6B6 

 

添加rewrite的选项

意思是访问/*.bmp会转为访问/index.php

[root@wang nginx]# vim nginx.conf

[root@wang nginx]# nginx -t

[root@wang nginx]# service nginxd restart

访问9EDF4F0EAB8448AF9428260A022627EF

1F57F9C7B2834A9EAE3A28CF3B0054BE 

5FB8E7ED8558438B813552435EDB1F76

一样,实现了重定定向

如果将配置文件更改为

AB151664FC0D41F3ACC409189364807A 

则实现了允许192.168.2.100访问,不允许192.168.2.0网段其他的访问

access模块:来源控制

  1. vim /etc/nginx/nginx.conf 在sever站点里面添加内容

76CDFDE1B84941E6AACC701ADFC6C99E 

service nginx restart

允许192.168.88.10访问,阻止网段其他的地址访问

打开一台PC机,地址设为192.168.88.10,进行访问

81E79F5D598C4CA3AD8AC3AA6AE622EB 

 

再把地址修改成192.168.88.0网段内的其他地址,进行访问

4BF5A4785F464ED6B026BE440C895E70 

实现了来源控制!

auth模块:身份验证

因为httpd-tools带有htpasswd 工具,所以先安装httpd-tools

1.vim /etc/nginx/nginx.conf 在sever站点里面添加内容

B2EEC39878FC4AB088A35BA04E00E987 

 

  1. htpasswd -c /etc/nginx/.htpasswd zhangsan创建帐号,并输入密码

  2. service nginxd restart重启

打开浏览器进行测试

60D1C27DBF9A469FB11D818919F2DFB9 

 

实现了身份验证!

ssl模块:安全加密

  1. cd /etc/pki/tls/

  2. vim openssl.cof 

更改文件,为其他机构也能颁发证书

0C190D2F87D14653958A8E8F0D1D9DDA 

更改默认值

9CC6021BDA9F4A6AA31E1FD6F27EC313 

3.echo "01">serial  记录序号

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

5.cd /etc/pki/CA/

6.chmod 600 private/cakey.pem改变权限

7.cd /etc/nginx/certs/

8.openssl ca -in nginx.req -out nginx.cert为自身产生证书

9.mkdir /etc/nginx/certs 创建目录存放证书

10.cd /etc/nginx/certs/

11.openssl genrsa 1024 >nginx.key 产生私钥

12.chmod 600 nginx.key

13.openssl req -new -key nginx.key -out nginx.req

14.openssl ca -in nginx.req -out nginx.cert

15.vim /etc/nginx/nginx.conf  打开443端口,加密访问

05594A00B7304D2FA11454CBD0335D63 

打开浏览器访问https://192.168.88.100

3DDAF14A995F491E840ED19058BF3935 

显示证书链

16.cd /etc/nginx/certs

17.cp /etc/pki/CA/cacert.pem ./

18.cp nginx.cert ./nginx.cert.bak

19.cat nginx.cert.bak cacert.pem >nginx.cert

查看出现下面几个文件

3EF90ABB5B414A4E84C358364F7EF8FE 

打开浏览器访问https://192.168.88.100,再点击查看证书

AB68EEC40FED40AA97EBB41E583BFD07 7BA16610EF264413B9BCA5D0B8F8C518

证书路径,就能看到证书链

 

 

 

 

 

upstream  health-check的使用

安装health-check模块需要安装低版本的nginx,高版本的nginx+需要付费才能使用,这里我使用的是1.0.11版本

[root@wang ~]# tar -zxvf nginx-1.0.11.tar.gz -C /usr/local/src/  拆解源码包

[root@wang ~]# unzip healthcheck_nginx_upstreams-master   拆解healthcheck模块补丁

[root@wang healthcheck_nginx_upstreams-master]# cd /usr/local/src/nginx-1.0.11/

[root@wang nginx-1.0.11]# patch -p1 </root/healthcheck_nginx_upstreams-master/nginx.patch  将health补丁打到nginx

[root@wang nginx-1.0.11]# ./configure --help |grep add  可以查看打完补丁都多出了

D25FE00F0CD6493EBABC456CFB3F3C2F 

--add-moudle=PATH

然后在安装nginx之前需要建组和用户

[root@wang nginx-1.0.11]# groupadd -r nginx

[root@wang nginx-1.0.11]# useradd -r -g nginx nginx

[root@wang nginx-1.0.11]#./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 \

--add-module=/usr/local/src/healthcheck_nginx_upstreams-master

进行配置

[root@wang nginx-1.0.11]# make && make install 配置安装

(需要安装pcre-devel包,openssl-devel包)

[root@wang nginx-1.6.0]# vim /etc/profile  加入路径

[root@wang nginx-1.6.0]# . /etc/profile

[root@wang nginx-1.6.0]# nginx -t   测试缺少文件

[root@wang nginx-1.6.0]# mkdir -pv /var/tmp/nginx/client/

[root@wang nginx-1.6.0]# nginx -t

[root@wang nginx-1.6.0]# nginx

[root@wang nginx-1.6.0]# netstat -tupln |grep 80

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      27414/nginx  

控制脚本写入

[root@wang mysql]# cd /etc/init.d/

[root@wang init.d]# vim nginxd

[root@wang init.d]# chmod a+x nginxd  加入可执行权限

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

lockfile=/var/lock/nginx.lock

# description: the nginx web server

# chkconfig: 2345 88 44

. /etc/init.d/functions

start(){

   if [ -e $lockfile ];then

      echo "the nginx web server is started"

      else

      echo -n "the nginx web server is starting....."

      sleep 1

      $prog && echo "ok" && touch $lockfile || echo "failer"

      fi

}

stop(){

   if [ ! -e $lockfile ];then

       echo "the nginx web server is stoped"

       else

       echo -n "the nginx web server is stoping....."

       killproc nginx && echo "ok" && rm -rf $lockfile || echo "failer"

   fi

 

 

}

 

case "$1" in

start)

     start

     ;;

stop)

     stop

     ;;

restart)

     stop

     start

     ;;

*)

echo "Usage: start|stop|restart"

     ;;

 esac

编辑脚本如此,保存退出

进行测试

[root@wang init.d]# pkill -9 nginx   杀死进程

[root@wang init.d]# chkconfig --add nginxd  加入启动

[root@wang init.d]# chkconfig --list |grep nginx  差看

[root@wang init.d]# service nginxd start

[root@wang ~]# cd /etc/nginx/

[root@wang nginx]# vim nginx.conf 编辑配置文件

 upstream backend {

 35             server 192.168.2.50;   

 36             server 192.168.2.101;       //对2.502.101进行服务

 37             healthcheck_enabled;

 38             healthcheck_delay 1000;

 39             healthcheck_timeout 1000;

 40             healthcheck_failcount 1;

 41            # healthcheck_expected ‘I_AM_ALIVE‘;

 42             healthcheck_send "GET /.health HTTP/1.0" ;     编辑为如此

                location / {

 54             root   html;

 55             index  index.html index.htm;

 56         proxy_pass http://backend;         //根为html,对backend的池做代理

 57         }

[root@wang nginx]# nginx -t

[root@wang nginx]# pkill -9 nginx

[root@wang nginx]# nginx

[root@wang nginx]service iptables stop

[root@wang nginx]setenforce 0

现在实现了轮询的功能,即请求分别发送至2.50 2.100,还有健康探测功能,即如果1台服务器坏掉,能够立即发现,不发送代理

先访问本机查看是否能够成功代理

0CF02D899F3F4A968E549B28D44B7907 

81E0C01754FE430C8BD20D9D3383CC69 

实现了轮询的功能

9A92CF2F82634A07BC0589007BC5ED44 

应该探测的是

6A6E25DA95C446C4A6A9DC3E0942FB76文件,没有这个文件所以显示down,下面建g.health文件测试下

03F59F495B034284B946F9277509C3C7 

第一个服务区建了个.health文件,显示ok


本文出自 “你猜我是谁” 博客,请务必保留此出处http://whhhj.blog.51cto.com/9289395/1568927

Nginx常见模块的使用