**Nginx相关资料请参阅[Nginx中文文档](http://tengine.taobao.org/nginx_docs/cn/docs/)**
# Nginx模块
Nginx模块共有下面的这些:
- ngx_http_core_module
- ngx_http_access_module
- ngx_http_addition_module
- ngx_http_auth_basic_module
- ngx_http_autoindex_module
- ngx_http_browser_module
- ngx_http_charset_module
- ngx_http_dav_module
- ngx_http_empty_gif_module
- ngx_http_fastcgi_module
- ngx_http_flv_module
- ngx_http_geo_module
- ngx_http_geoip_module
- ngx_http_gunzip_module
- ngx_http_gzip_module
- ngx_http_gzip_static_module
- ngx_http_headers_module
- ngx_http_image_filter_module
- ngx_http_index_module
- ngx_http_limit_conn_module
- ngx_http_limit_req_module
- ngx_http_log_module
- ngx_http_map_module
- ngx_http_memcached_module
- ngx_http_mp4_module
- ngx_http_perl_module
- ngx_http_proxy_module
- ngx_http_random_index_module
- ngx_http_realip_module
- ngx_http_referer_module
- ngx_http_rewrite_module
- ngx_http_secure_link_module
- ngx_http_split_clients_module
- ngx_http_ssi_module
- ngx_http_ssl_module
- ngx_http_sub_module
- ngx_http_upstream_module
- ngx_http_userid_module
- ngx_http_xslt_module
- ngx_mail_core_module
- ngx_mail_pop3_module
- ngx_mail_imap_module
- ngx_mail_smtp_module
- ngx_mail_auth_http_module
- ngx_mail_proxy_module
- ngx_mail_ssl_module
# 模块使用举例
在这里我只介绍其中的四个模块,其他模块用法请参阅[Nginx中文文档](http://tengine.taobao.org/nginx_docs/cn/docs/)
## ngx_http_access_module
模块 ngx_http_access_module 允许限制某些IP地址的客户端访问。也可以通过 密码来限制访问。 使用 satisfy 指令就能同时通过IP地址和密码来限制访问。
配置范例:
location / {
deny 192.168.0.21;
allow 192.168.0.0/24;
deny all;
}
规则按照顺序依次检测,直到匹配到第一条规则。 在这个例子里,IPv4的网络中只有192.168.0.0/24允许访问,但 192.168.0.21除外, 在规则很多的情况下,使用 ngx_http_geo_module 模块变量更合适。
192.168.0.21访问nginx返回403错误:
![3-2-5-1](http://pded8ke3e.bkt.clouddn.com/3-2-5-1.png)
## ngx_http_auth_basic_module
模块ngx_http_auth_basic_module 允许使用“HTTP基本认证”协议验证用户名和密码来限制对资源的访问。也可以通过 地址来限制访问。 使用satisfy 指令就能同时通过地址和密码来限制访问。
使用这个模块需要httpd htpasswd的支持,所以我们先安装httpd
```
[root@tengine-1 conf]# yum -y install httpd
[root@tengine-1 conf]# htpasswd -bcm /var/user yjscloud 123456 #创建访问前端访问的用户和密码
Adding password for user yjscloud
[root@tengine-1 conf]# cat /var/user
yjscloud:$apr1$G1Cf7JMP$cw0.ofGQ6w7dbaMqDJACs.
```
修改配置文件:
![3-2-6](http://pded8ke3e.bkt.clouddn.com/3-2-6.png)
/etc/rc.d/init.d/nginx restart
前端查看:
![3-2-7](http://pded8ke3e.bkt.clouddn.com/3-2-7.png)
## ngx_http_proxy_module
什么是反向代理?
- 通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服务器发起请求,最终达到客户机上网的目的。
- 而反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器
![3-2-8](http://pded8ke3e.bkt.clouddn.com/3-2-8.png)
单点的反向代理配置:
首先我们要安装一个tomcat,将`apache-tomcat-7.0.61.tar.gz`安装包上传到/opt目录下,需要下载tomcat的小伙伴[请点击这里](https://pan.baidu.com/s/1SmorIH2k4IieKULAoeHdjw)
```
yum -y install java
cd /opt
tar zxf apache-tomcat-7.0.61.tar.gz
sh /opt/apache-tomcat-7.0.61/bin/startup.sh
```
修改配置文件:
![3-2-9](http://pded8ke3e.bkt.clouddn.com/3-2-9.png)
/etc/rc.d/init.d/nginx restart #重启nginx
多点反向代理配置:
已同样的方法在另外一个节点(192.168.0.21)安装tomcat
修改配置文件:
![3-2-10](http://pded8ke3e.bkt.clouddn.com/3-2-10.png)
/etc/rc.d/init.d/nginx restart #重启nginx
修改网页内容
```
[root@tengine-1 ]# cd /opt/apache-tomcat-7.0.61/webapps/ROOT/
[root@tengine-1 ]# echo "192.168.0.19~~~tomcat-111111" > index.jsp
```
```
[root@tengine-2 ]# cd /opt/apache-tomcat-7.0.61/webapps/ROOT/
[root@tengine-2 ]# echo "192.168.0.21~~~tomcat-222222" > index.jsp
```
修改后分别在两台机子上重启tomcat
```
sh /opt/apache-tomcat-7.0.61/bin/shutdown.sh
sh /opt/apache-tomcat-7.0.61/bin/startup.sh
```
前端访问:
![3-2-11](http://pded8ke3e.bkt.clouddn.com/3-2-11.png)
![3-2-12](http://pded8ke3e.bkt.clouddn.com/3-2-12.png)
## ngx_http_upstream_module
这是tengine新添加的健康检查模块
在nginx.conf添加如下配置:
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_http_send "HEAD / HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
![3-2-13](http://pded8ke3e.bkt.clouddn.com/3-2-13.png)
etc/rc.d/init.d/nginx restart #重启nginx
前端页面查看
![3-2-14](http://pded8ke3e.bkt.clouddn.com/3-2-14.png)
关闭tengine-2
![3-2-15](http://pded8ke3e.bkt.clouddn.com/3-2-15.png)
前端监控到主机掉线,启动tengine-2后前端监控将恢复正常。
- 献给我的朋友们
- 一、个人对学习的看法
- 二、运维技能图谱
- 三、运维常用技能
- 3.1 Vim(最好用的编辑器)
- 3.2 Nginx & Tengine(Web服务)
- 1. Nginx介绍和部署
- 2. Nginx配置解析
- 3. Nginx常用模块
- 4. Nginx 的session 一致性问题
- 3.3 Tomcat(Web中间件)
- 3.4 Keepalived(负载均衡高可用)
- 3.5 Memcache(分布式缓存)
- 3.6 Zookeeper(分布式协调系统)
- 3.7 KVM(开源虚拟化)
- 1. 虚拟化介绍
- 2. KVM基础
- 3. 设置VNC和时间同步
- 4. kvm虚拟机快照备份
- 5. kvm虚拟机在线扩展磁盘
- 6. kvm虚拟机静态迁移
- 7. kvm虚拟机动态迁移
- 8. kvm虚拟机存储池配置
- 9. cpu添加虚拟化功能
- 3.8 GitLab(版本控制)
- 3.8.1 GitLab安装与汉化
- 3.9 Jenkins(运维自动化)
- 3.10 WAF(Web防火墙)
- 3.10.1初探WAF
- 四、常用数据库
- 4.1 MySQL(关系型数据库)
- 1. MySQL源码安装
- 4.2 Mongodb(适用与大数据分析的数据库)
- 4.3 Redis(非关系数据库)
- 五、自动化运维工具
- 5.1 Cobbler(系统自动化部署)
- 5.2 Ansible(自动化部署)
- 5.3 Puppet(自动化部署)
- 5.4 SaltStack(自动化运维)
- 六、存储
- 6.1 GFS(文件型存储)
- 6.2 Ceph(后端存储)
- 七、运维监控工具
- 7.1 对监控的理解
- 7.2 Zabbix(运维监控)
- 7.2.1 Zabbix简介
- 7.2.2 Zabbix服务部署
- 1. Zabbix服务端部署
- 2. Zabbix客服端部署
- 3. 配置前端展示
- 4. zabbix告警配置
- 7.2.3 Zabbix监控服务
- 1. 监控网络设备
- 2. 自定义Nginx监控
- 7.3 云镜(安全监控)
- 7.4 ELK(日志收集展示)
- 八、运维云平台
- 8.1 OpenStack(开源云操作系统)
- 8.1.1 OpenStack简介
- 8.1.2 实验架构设计
- 8.1.3 集群环境准备
- 8.1.4 controller节点部署
- 1. 安装Mariadb Galera Cluster集群
- 2. 安装RabbitMQ Cluster集群
- 3. 安装Pacemaker
- 4. 安装HAProxy
- 5. 安装配置Keystone
- 6. 安装配置glance
- 1. 制作镜像模板
- 7. 安装配置nova
- 8. 安装配置neutron
- 1. 配置虚拟机网络
- 9. 安装Dashboard
- 10. 安装配置cinder
- 8.1.5 compute节点部署
- 1. 安装相关软件包
- 2. 安装Neutron
- 3. 配置cinder
- 4. 创建第一个虚拟机
- 8.1.6 OpenStack报错处理
- 1. cinder僵尸卷删除
- 8.1.7 快速孵化虚拟机方案
- 8.1.8 Kolla容器化部署OpenStack
- 1. 单点部署
- 2. 多节点部署
- 8.2 Tstack(腾讯云平台)
- 8.3 K8s(微服务容器化)
- 九、运维编程技能
- 9.1 Shell(运维必会语言)
- 9.2 Python(万能的胶水语言)
- 十、Devops运维
- 10.1 理念
- 10.2 Devops实战