Nginx常见模块的使用
安装好nginx后或者搭建完lnmp环境后为了实现一些功能,则需要使用各种各样的模块
rewrite的使用
[root@wang nginx]# vim nginx.conf
添加rewrite的选项
意思是访问/*.bmp会转为访问/index.php
[root@wang nginx]# vim nginx.conf
[root@wang nginx]# nginx -t
[root@wang nginx]# service nginxd restart
访问
和
一样,实现了重定定向
如果将配置文件更改为
则实现了允许192.168.2.100访问,不允许192.168.2.0网段其他的访问
access模块:来源控制
vim /etc/nginx/nginx.conf 在sever站点里面添加内容
service nginx restart
允许192.168.88.10访问,阻止网段其他的地址访问
打开一台PC机,地址设为192.168.88.10,进行访问
再把地址修改成192.168.88.0网段内的其他地址,进行访问
实现了来源控制!
auth模块:身份验证
因为httpd-tools带有htpasswd 工具,所以先安装httpd-tools
1.vim /etc/nginx/nginx.conf 在sever站点里面添加内容
htpasswd -c /etc/nginx/.htpasswd zhangsan创建帐号,并输入密码
service nginxd restart重启
打开浏览器进行测试
实现了身份验证!
ssl模块:安全加密
cd /etc/pki/tls/
vim openssl.cof
更改文件,为其他机构也能颁发证书
更改默认值
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端口,加密访问
打开浏览器访问https://192.168.88.100
显示证书链
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
查看出现下面几个文件
打开浏览器访问https://192.168.88.100,再点击查看证书
证书路径,就能看到证书链
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 可以查看打完补丁都多出了
--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.50和2.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台服务器坏掉,能够立即发现,不发送代理
先访问本机查看是否能够成功代理
实现了轮询的功能
应该探测的是
文件,没有这个文件所以显示down,下面建g个.health文件测试下
第一个服务区建了个.health文件,显示ok
本文出自 “你猜我是谁” 博客,请务必保留此出处http://whhhj.blog.51cto.com/9289395/1568927
原文地址:http://whhhj.blog.51cto.com/9289395/1568927