Nginx常见模块的使用

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

rewrite的使用

[[email protected] nginx]# vim nginx.conf

添加rewrite的选项

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

[[email protected] nginx]# vim nginx.conf

[[email protected] nginx]# nginx -t

[[email protected] nginx]# service nginxd restart

访问

一样,实现了重定定向

如果将配置文件更改为

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

access模块:来源控制

  1. 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站点里面添加内容

  1. htpasswd -c /etc/nginx/.htpasswd zhangsan创建帐号,并输入密码
  2. service nginxd restart重启

打开浏览器进行测试

实现了身份验证!

ssl模块:安全加密

  1. cd /etc/pki/tls/
  2. 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版本

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

[[email protected] ~]# unzip healthcheck_nginx_upstreams-master   拆解healthcheck模块补丁

[[email protected] healthcheck_nginx_upstreams-master]# cd /usr/local/src/nginx-1.0.11/

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

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

--add-moudle=PATH

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

[[email protected] nginx-1.0.11]# groupadd -r nginx

[[email protected] nginx-1.0.11]# useradd -r -g nginx nginx

[[email protected] 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

进行配置

[[email protected] nginx-1.0.11]# make && make install 配置安装

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

[[email protected] nginx-1.6.0]# vim /etc/profile  加入路径

[[email protected] nginx-1.6.0]# . /etc/profile

[[email protected] nginx-1.6.0]# nginx -t   测试缺少文件

[[email protected] nginx-1.6.0]# mkdir -pv /var/tmp/nginx/client/

[[email protected] nginx-1.6.0]# nginx -t

[[email protected] nginx-1.6.0]# nginx

[[email protected] nginx-1.6.0]# netstat -tupln |grep 80

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

控制脚本写入

[[email protected] mysql]# cd /etc/init.d/

[[email protected] init.d]# vim nginxd

[[email protected] 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

编辑脚本如此,保存退出

进行测试

[[email protected] init.d]# pkill -9 nginx   杀死进程

[[email protected] init.d]# chkconfig --add nginxd  加入启动

[[email protected] init.d]# chkconfig --list |grep nginx  差看

[[email protected] init.d]# service nginxd start

[[email protected] ~]# cd /etc/nginx/

[[email protected] 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         }

[[email protected] nginx]# nginx -t

[[email protected] nginx]# pkill -9 nginx

[[email protected] nginx]# nginx

[[email protected] nginx]service iptables stop

[[email protected] nginx]setenforce 0

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

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

实现了轮询的功能

应该探测的是

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

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

时间: 2024-10-01 22:24:19

Nginx常见模块的使用的相关文章

Nginx常见错误与问题之解决方法技术指南

  Nginx常见错误与问题之解决方法技术指南. 安装环境: 系统环境:redhat enterprise 6.5 64bit 1.Nginx 常见启动错误 有的时候初次安装nginx的时候会报这样的错误 sbin/nginx -c conf/nginx.conf 报错内容:sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or

Nginx rtmp模块nginx-rtmp-module指令详解

指令Corertmp语法:rtmp { ... }上下文:根描述:保存所有 RTMP 配置的块.server语法:server { ... }上下文:rtmp描述:声明一个 RTMP 实例.rtmp {  server {  }}listen语法:listen (addr[:port]|port|unix:path) [bind] [ipv6only=on|off] [so_keepalive=on|off|keepidle:keepintvl:keepcnt]上下文:server描述:给 NG

nginx -- handler模块(100%)

handler模块简介 相信大家在看了前一章的模块概述以后,都对nginx的模块有了一个基本的认识.基本上作为第三方开发者最可能开发的就是三种类型的模块,即handler,filter和load-balancer.Handler模块就是接受来自客户端的请求并产生输出的模块.有些地方说upstream模块实际上也是一种handler模块,只不过它产生的内容来自于从后端服务器获取的,而非在本机产生的. 在上一章提到,配置文件中使用location指令可以配置content handler模块,当Ng

19. Nginx常见错误

HTTP 状态码 413:用户上传的文件过大,需要调高 client_max_body_size 参数设置 502:后端无响应,例如 php 服务是否启动,php-fpm 的 pm 相关设置值是否过小导致无法创建新的进程处理请求等 504:后端服务执行超时,此时需要查看一下后端服务器是否CPU占用过高,RDS数据库是否有慢查询等 专题阅读 1. Nginx的优点 2. Nginx的安装与开机自启 3. Nginx目录和配置语法 4. Nginx模块 5. Nginx静态资源处理 6. Nginx

nginx自定义模块编写-根据post参数路由到不同服务器

nginx可以轻松实现根据不同的url 或者 get参数来转发到不同的服务器,然而当我们需要根据http包体来进行请求路由时,nginx默认的配置规则就捉襟见肘了,但是没关系,nginx提供了强大的自定义模块功能,我们只要进行需要的扩展就行了. 我们来理一下思路,我们的需求是: nginx根据http包体的参数,来选择合适的路由 在这之前,我们先来考虑另一个问题: 在nginx默认配置的支持下,能否实现服务器间的跳转呢?即类似于状态机,从一个服务器执行OK后,跳转到另一台服务器,按照规则依次传递

Nginx Http模块开发

关于Nginx Http模块开发的文章非常少,只有Emiler的那篇关于Http模块的文章,但是那篇文章里面,并没有说到事件型的模块如何进行开发.而且文章里面提到的内容实在是让人有点意犹未尽.因此,对于Http事件型模块的开发进行了一些总结,与大家分享.但是,无论如何,要进行Nginx模块开发,最好的方法还是找到相似性较大的模块的代码进行参考,多试多看. 通常,一个Http模块均是有以下的几个部分组成: 1.模块配置结构体:(configure structure) 负责存储配置项的内容,每一条

面试题笔记:实现Nginx Upload 模块 功能上传文件。

linux服务器开发测评题目———————————————————————————— 搭建一个nginx服务器,能完成文件上传功能.主要构成有: <1> 用于测试服务器上传功能用的前端html页面 <2> nginx web服务器,包括了文件上传功能模块,注意配置好配置文件 <3> 对于上传成功的文件,给前端返回upload successfully信息 动手搭建完成后,针对上面的几点要求截几张图,同时把前端html页面,nginx配置文件,和假如需要使用的业务逻辑代码

Nginx 事件模块

概述 Nginx 是以事件的触发来驱动的,事件驱动模型主要包括事件收集.事件发送.事件处理(即事件管理)三部分.在Nginx 的工作进程中主要关注的事件是 IO 网络事件 和 定时器事件.在生成的 objs 目录文件中,其中ngx_modules.c 文件的内容是 Nginx 各种模块的执行顺序,我们可以从该文件的内容中看到事件模块的执行顺序为以下所示:注意:由于是在 Linux 系统下,所以支持具体的 epoll 事件模块,接下来的文章结构按照以下顺序来写. extern ngx_module

LH01_ansible及其常见模块01

ansible及其常见模块01 目录: 1)ansible的特性 2)ansible安装 3)ansible配置添加管理主机 4)配置基于ssh密钥管理 5)如何查看模块帮助 6)ansible命令应用基础 7)ansible常见模块 Ansible核心组件: ansible core host iventory Core Moduies Custom Modules Playbooks(yaml,jinjia2) Connection Plugins 1)ansible的特性: 基于Pytho